javascript - 公开一个全局可计算的

标签 javascript knockout.js

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

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

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

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

不幸的是,我的详尽搜索没有发现任何结果。这有可能吗?

注意:我知道我可以将其添加到 ViewModel 中,但这不会处理嵌套对象,并且 $root.resource > 对于我的标准来说还不够干燥。我也可以使用继承,但我想如果可能的话避免这种情况。本质上我想做的是扩展 ko 中的“表达式”。

最佳答案

您可以通过自定义绑定(bind)来完成此操作:

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

    }
};

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

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

工作中fiddle在这里。

编辑根据您提供的新信息更新了我的 fiddle ,此处:fiddle

关于javascript - 公开一个全局可计算的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13931278/

相关文章:

javascript - KnockoutJS 和递归模板

javascript - AJAX 附加选项无效

javascript - 在 require.js 中使用 Dust

javascript - 通过knockout获取点击输入的值

angularjs - angular 和 knockout 可以在同一个 Web 应用程序中使用吗?

javascript - 在 knockout 计算访问器上订阅 arrayChange

javascript - 将 fp-ts TaskEither 与右侧的 Either 链接起来

javascript - 单击按钮时增加 div 的高度,并在我再次单击同一按钮时减小它

javascript - <option> 标签上的跨浏览器高级工具提示功能

javascript - onclick javascript 增加类值