内knockout.js绑定表达式,我可以使用$data,$parent和$rootpseudovariables.当我使用在JavaScript中声明的ko.computedobservable时,如何获得这些伪变量的等价物?
我有一个带有子集合的父视图模型,父视图模型有一个selectedChildobservable.鉴于此,我可以使用数据绑定表达式将CSS类添加到当前选择的子项:
<ul data-bind="foreach: children">
<li data-bind="text: name,
css: {selected: $data === $root.selectedChild()},
click: $root.selectChild"></li>
</ul>
<script>
vm = {
selectedChild: ko.observable(),
children: [{name: 'Bob'}, {name: 'Ned'}],
selectChild: function(child) { vm.selectedChild(child); }
};
ko.applyBindings(vm);
</script>
Run Code Online (Sandbox Code Playgroud)
但是我的观点模型会变得更复杂,我想"我被选中了吗?" 能够做的不仅仅是将单个CSS类添加到单个元素.我真的想isSelected在子视图模型上创建一个计算属性,因此我可以添加依赖于它的其他计算属性.
我尝试过只编写引用的JavaScript,$data并且$root,当敲门可能定义这些变量并且以某种方式让它们在调用我的赋值computed函数时它们在范围内时:
{
name: 'Bob',
isSelected: ko.computed(function(){ return $data === $root.selectedChild(); })
}
Run Code Online (Sandbox Code Playgroud)
但没有这样的运气:我的评估中function,无论是$data和$root是undefined. …