相关疑难解决方法(0)

如何在.computed()observable中使用knockout的$ parent/$ root伪变量?

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$rootundefined. …

javascript knockout.js

59
推荐指数
1
解决办法
5万
查看次数

标签 统计

javascript ×1

knockout.js ×1