0
Here은 내가 작업하고있는 코드입니다. 나는 이렇게 보이는 VM을 정의했다.
var employee = function(fname,lname){
var self= this;
self.fname = ko.observable(fname);
self.lname = ko.observable(lname);
self.selectedElement = ko.observable('Default Value');
}
var vm = function(){
var self = this;
self.employees = new ko.observableArray([]);
self.selectedElement = ko.observable(-1);
var e1 = new employee('f1','l1');
var e2 = new employee('f2','l2');
self.employees.push(e1);
self.employees.push(e2);
};
ko.applyBindings(vm,container);
그리고 내 코드는 직원의 목록이 그 아가씨 '
employee
'메인 뷰 모델 '
vm
'모두 동일한 속성을 임명했다 (
selectedElement
)
이제 내부
<body id="container">
<h1>Empoyees</h1>
<div>
<div data-bind="foreach: employees">
<h4 data-bind="text: 'Employee' + $index()"></h4>
<span>First Name :</span>
<span data-bind="text: fname"></span>
<br/>
<span>Last Name :</span>
<span data-bind="text: fname"></span>
<br/>
<span data-bind="text: selectedElement()"></span>
<!-- I want to access parents 'selectedElement' i.e. vm.slectedElement() -->
<!--I tried below code but its causing binding error.-->
<!-- <span data-bind="text: $parent.selectedElement()"></span> -->
<br/>
</div>
</div>
주입니다 표시 foreach 바인딩 'selectedElement
'root/parent 컨텍스트의 속성에 액세스하려고 시도하고 있지만 foreach ko가 'employee'클래스의 'selectedElement'속성에 액세스하고 있기 때문에.
$root
및 $parent
키워드를 사용하여 부모 요소 속성에 도달했지만 바인딩 오류가 발생했습니다.
나는 무엇이 있습니까? Here은 다시 엄청난 링크입니다.
빠른 답변을 위해 @Jamiec에게 감사드립니다. 하지만 여전히 ($ root/$ parent를 제외하고) 다른 모든 것들이 내 뷰 모델의 객체를 인스턴스화하지 않고 작업 한 이유에 대해 머리를 긁적입니다. 나는 기초를 모른다. 이것 좀 비켜 주시겠습니까? – user2243747
@ user2243747 knockout은 뷰 모델로서 직선 함수를 받아 들일 것이지만, 아마도'this'는 그렇게 할 때 윈도우 객체를 참조 할 것입니다. 런타임의 뷰 모델 계층을 혼란스럽게 만들 것이므로'$ root'와'$ parent' 같은 것들은 아마도 잘못된 장소를 가리킬 것입니다. – Jamiec