Knockout.js如何将我的数据绑定移动到头部的函数中?

时间:2012-11-13 19:04:28

标签: knockout.js knockout-2.0

我有一个数据绑定,里面有很多逻辑。目前我必须将它粘贴几个地方才能得到我想要的东西。我希望能够使它成为仅在一个地方的功能,最好是作为KO对象的方法。我需要移动的数据绑定是创建斜体计数文本的数据绑定。

data-bind="text: ($data.children)?($data.children.filter(function(e){return e.enabled()}).length + ' Children On'):('No Children')"

http://jsfiddle.net/5UeND/6/

1 个答案:

答案 0 :(得分:0)

您可以在主视图模型上创建一个函数,该函数返回ko.computed并计算:

self.childrenCounter = function(data) {
        return ko.computed(function() {
            return (this.children) ? (this.children.filter(function(e) {
                return e.enabled()
            }).length + ' Children On') : ('No Children')
        }, data);
    }

然后你可以在模板中使用这样的内容:

<i data-bind="text: $root.childrenCounter($data)"></i>

Demo JSFiddle.