knockoutjs - 在 foreach 绑定中访问 $parent/$root
knockoutjs - accessing $parent/$root inside foreach binding
Here 是我正在研究的代码。我已经定义了一个看起来像这样的虚拟机。
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);
我显示员工列表的代码是
<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>
请注意,lass“employee
”和主视图模型“vm
”都具有相同的 属性 命名(selectedElement
)
现在在 foreach 绑定中,我正在尝试访问 root/parent 上下文的“selectedElement
”属性,但是因为我在 foreach 内部,所以我正在访问 'selectedElement' 属性 'employee' class.
我尝试使用 $root
和 $parent
关键字访问父元素 属性 但它导致绑定错误。
我错过了什么吗? Here 又是个笨蛋 link。
您从未创建根视图模型的实例。将初始调用更改为
ko.applyBindings(new vm(),container);
https://plnkr.co/edit/wRKfnJi9Jl9Rj2unbgQp?p=preview
当您这样做时,$root
或 $parent
将按预期工作。
Here 是我正在研究的代码。我已经定义了一个看起来像这样的虚拟机。
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);
我显示员工列表的代码是
<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>
请注意,lass“employee
”和主视图模型“vm
”都具有相同的 属性 命名(selectedElement
)
现在在 foreach 绑定中,我正在尝试访问 root/parent 上下文的“selectedElement
”属性,但是因为我在 foreach 内部,所以我正在访问 'selectedElement' 属性 'employee' class.
我尝试使用 $root
和 $parent
关键字访问父元素 属性 但它导致绑定错误。
我错过了什么吗? Here 又是个笨蛋 link。
您从未创建根视图模型的实例。将初始调用更改为
ko.applyBindings(new vm(),container);
https://plnkr.co/edit/wRKfnJi9Jl9Rj2unbgQp?p=preview
当您这样做时,$root
或 $parent
将按预期工作。