【问题标题】:How can I pass back a value on a visible binding in Knockout?如何在 Knockout 中传回可见绑定的值?
【发布时间】:2012-11-07 23:44:43
【问题描述】:

我正在尝试对淘汰视图模型进行一些重构。从模型对象中分离一些视图逻辑开始。

我想知道在使用可见绑定时是否有办法将值传回?

我目前的情况是我处于 Foreach 循环中。我想将 Knockout 正在迭代的对象传回给我在可见绑定上调用的方法:

data-bind="visible: SomeMethod"

data-bind="visible: SomeMethod(object)"

该方法显然是一个ko.computed函数,我曾尝试将值传回给它,但没有成功。它始终未定义。

var SomeMethod = ko.computed(function() {
.....
}

如果这是可能的,有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc-3 knockout.js


    【解决方案1】:

    Knockout 在计算的 observable 中执行绑定以跟踪依赖关系。我不确定你的确切目标,但你可以在你的情况下使用普通函数。

    var SomeMethod = function(item) {
         //do something with the item and return a value
    
    };
    

    根据您要传递的内容,您可能希望在绑定中使用$data,例如:

    data-bind="visible: SomeMethod($data)"
    

    另一个更常用的选择是在每个返回适当值的项上实际放置一个计算值。如果您传递给函数的值在项目本身上表示,那么您应该能够创建一个计算来清晰地表示它的值。

    【讨论】:

    • 感谢 RP。几个快速跟进的问题。我以为我遇到了,除非“SomeMethod”是一个计算函数,否则它永远不会调用普通的“function SomeMethod(data) {}”。另外,你能给我一个你最后一句话的例子吗?“应该能够创建计算来干净地表示它的值”? “SomeMethod”实际上驻留在父级中,因此这将是我无法访问该对象的唯一原因,除非我将它传递给函数。所以它实际上是 (data-bind="visible: $parent.SomeMethod")。谢谢。
    • 我的意思是这样的区别:jsfiddle.net/rniemeyer/C6utAjsfiddle.net/rniemeyer/CzH9F
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2014-02-21
    • 2013-10-27
    相关资源
    最近更新 更多