반응형
KnockoutJS에서 $ data 변수의 기원과 목적은 무엇입니까?
에서 KnockoutJS 자습서 나는 설명 할 수없는 변수를 포함하는 다음 코드 예제를 만났다 $data
.
보기 (html) :
<!-- Folders -->
<ul class="folders" data-bind="template: { name: 'folderTemplate', foreach: folders }"></ul>
<script type="text/html" id="folderTemplate">
<li data-bind="css: { selected: $data == mailViewModel.selectedFolder() },
click: function() { mailViewModel.selectFolder($data) }">
${$data}
</li>
</script>
보기 모델 (JavaScript) :
var viewModel = {
// Data
folders: ['Inbox', 'Archive', 'Sent', 'Spam'],
selectedFolder: ko.observable('Inbox'),
// Behaviours
selectFolder: function (folder) {
this.selectedFolder(folder);
}
};
window.mailViewModel = viewModel;
ko.applyBindings(viewModel);
이 튜토리얼에는 달러 기호의 용도와 출처에 대한 설명이 포함되어 있지 않습니다 $data
. 변수는 $data
어디에도 정의되지 않은 나는 모든 세 개의 인스턴스 이름을 바꿀 때 $data
까지를 $foobar
, 예는 더 이상 작동하지 않습니다.
여기서 무슨 마술이 일어나고 있습니까?
$data
변수 내장 현재 오브젝트를 참조하기 위해 사용되는 변수를 결합한다. 예제에서 이것은 viewModel.folders
배열 의 요소 중 하나입니다 .
$ data는 Knockout의 Binding Contexts의 일부입니다 .
다음은 모든 기본 제공 변수입니다.
- $ 부모
- $ 부모
- $ root
- $ 구성 요소
- $ data
- $ index (foreach 바인딩 내에서만 사용 가능)
- $ parentContext
- $ rawData
- $ componentTemplateNodes
나는 그것을 작동시켰다
.selected {
color:red;
}
<ul class="folders" data-bind="template: { name: 'folderTemplate', foreach: folders }"></ul>
<script type="text/html" id="folderTemplate">
<li data-bind="css: { selected: $data == mailViewModel.selectedFolder() },text:$data,
click: function() { mailViewModel.selectFolder($data) }">
</li>
</script>
var viewModel = {
// Data
folders: ['Inbox', 'Archive', 'Sent', 'Spam'],
selectedFolder: ko.observable('Inbox'),
// Behaviours
selectFolder: function (folder) {
this.selectedFolder(folder);
}
};
window.mailViewModel = viewModel;
ko.applyBindings(viewModel);
반응형
'program tip' 카테고리의 다른 글
사용자가 열 머리글을 클릭 할 때 DataGridView 정렬을 활성화하는 방법은 무엇입니까? (0) | 2020.11.15 |
---|---|
파이썬에서는 왜 인쇄 대신 로깅을 사용합니까? (0) | 2020.11.15 |
C ++ 11 "자동"의미 (0) | 2020.11.15 |
숫자 리터럴의 ULL 접미사 (0) | 2020.11.15 |
내부 클래스가 private final 메서드를 재정의 할 수있는 이유는 무엇입니까? (0) | 2020.11.15 |