全局展开可计算的

时间:2012-12-18 10:47:06

标签: javascript knockout.js

我想在knockout.js中公开一个可计算的全局(不提升到全局javascript范围),例如:

<span data-binding="text: resource('test/resources', 'myresource')"></span>

或者使用一些将新值传递给父值的绑定:

<span data-binding="text: {resource: res: 'test/resources', name: 'myresource'}"></span>

不幸的是,我的详尽搜索并没有改变任何事情。这有可能吗?

注意:我知道我可以将其添加到ViewModel,但这不会处理嵌套对象,$root.resource对我的标准来说不够干。我也可以使用继承,但我想在可能的情况下避免使用 。基本上我要做的是在ko中扩展'表达式'。

2 个答案:

答案 0 :(得分:1)

好吧,我要么继续使用this pattern,要么简单地将名称空间从ko别名并改变它(基本上将命名空间从ko复制到某个对象并使用它直到你实现所需的功能)。

答案 1 :(得分:1)

您可以使用自定义绑定来完成此操作:

ko.bindingHandlers.resource = {
    init: function(element, valueAccessor){
        // Do here whathever you'd like to do with the resource

    }
};

您可以像标准KO绑定一样使用此自定义绑定,例如:

<div data-bind="resource: myResource"></div>

在这里工作fiddle

编辑根据您提供的新信息更新了我的小提琴:fiddle