Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 全局公开可计算的_Javascript_Knockout.js - Fatal编程技术网

Javascript 全局公开可计算的

Javascript 全局公开可计算的,javascript,knockout.js,Javascript,Knockout.js,我想在knockout.js中全局公开一个可计算的文件(不升级到全局javascript范围),例如: 或者,使用一些将新值传递给父值的绑定: 不幸的是,我彻底的搜索没有找到任何结果。这有可能吗 注意:我知道我可以将其添加到ViewModel,但这不会处理嵌套对象,而且$root.resource对于我的标准来说还不够干燥。我也可以使用继承,但如果可能的话,我希望避免这种情况。本质上,我试图做的是扩展ko中的“表达式”。好的,我要么继承、使用,要么简单地从ko中别名名称空间并对其进行修改

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


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


不幸的是,我彻底的搜索没有找到任何结果。这有可能吗


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

好的,我要么继承、使用,要么简单地从ko中别名名称空间并对其进行修改(基本上是将名称空间从ko复制到某个对象,并对其进行处理,直到实现所需的功能).

您可以通过自定义绑定来实现这一点:

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>

在这里工作


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

添加函数到ko是否会将它们添加到“表达式求值”中?我不介意直接修改ko,我只想将函数公开给绑定。这些解决方案对于OP所问的简单问题来说太重了。我不完全理解你的问题。你能提供一段JavaScript代码吗?代码不必运行,这样我就可以看到发生了什么。另外,自定义绑定是否足够?@Anzeo你看:-如果我可以将其与其他绑定一起使用,我不介意绑定(请参见第二个示例)。谢谢,我想我得到了它,请参见下文Hanks Anzeo,问题是:
element.innerHTML=
。我想知道是否有可能将我的绑定传递到另一个绑定(请参阅问题主体中的第二个示例)。例如,我们同时得到
text:{resource:res}
attr:{src:{resource:res}}
。您想从自定义绑定中调用文本绑定吗?不一定只调用文本,也可以调用任何绑定。因此,要么有任何绑定调用my one(更可取),要么像
resource:{res:res,bind:text}
这样的东西。有任何绑定调用都需要编辑KO框架代码,但不确定您是否需要。另一个选择并不难。不过,我会在minOne便笺中用更新后的小提琴编辑我的答案,如果你想在你的应用程序中使用它,你可能会想重新考虑一下你在做什么