javascript - Knockout js 计算未被触发

标签 javascript jquery knockout.js computed-observable

代码可以在 http://jsfiddle.net/6kMWM/10/ 上找到.

在 FilterViewModel 中,我正在创建一个可观察对象。

var FilterViewModel=  ko.observable({
    Name: ko.observable("test"),
    Code: ko.observable("test"),
    Number: ko.observable("test")
});

然后在 BankViewModel 中我正在运行一个计算方法,当任何输入框发生更改时它应该触发。

var BankViewModel = function(){
    var self = this;
        self.Collection = ko.observableArray([]),
        self.filteredCollection = ko.computed(function () {

            var filter = FilterViewModel();
            alert("invoked");
        }),
        self.add = function (bankObject) {
            self.Collection.push(bankObject);
        },
        self.isSelected = function (data) {
            $('.bank').css('background-color', 'white'); 
            $('.bank p').css('color', '#333');
            $('#bank-row-' + data.Code()).css('background-color', 'blue');
            $('#bank-row-' + data.Code()+" p").css('color', 'white');

        }
};

由于某种原因,它没有被解雇。谁能帮帮我吗?

提前致谢

最佳答案

您的 fiddle 有几个问题:

  1. 您绑定(bind)到值而不是可观察值。当你写<input type="text" data-bind="value: global.filterViewModel().Name()" placeholder="Filter by Name"/>时ko 使用 global.filterViewModel().Name 的值不是可观察到的。因此没有真正的绑定(bind)(更新ko不会更新接口(interface),更新接口(interface)也不会更新ko)。您需要删除最后一个括号:global.filterViewModel().Name
  2. 您在绑定(bind)中输入名称而不是代码,反之亦然
  3. 您订阅了 FilterViewModel 的更改,但未订阅其子可观察更改。为此,请将子可观察量的评估包含在计算的可观察量中:

-

self.filteredCollection = ko.computed(function () {
    var filter = FilterViewModel();    
    if (filter.Name() != 'testname')
        alert("name");
    if (filter.Code() != 'testcode')
        alert("code");
    if (filter.Number() != 'testnumber')
        alert("number");
}),

您可以在这里测试http://jsfiddle.net/b37tu/1/

关于javascript - Knockout js 计算未被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23396099/

相关文章:

javascript - jquery 复选框 - 检查数组中的值并检查这些值

javascript - crm2011插件调用js函数

javascript - R 中的 HighCharts 桑基图

javascript - 标题中的提交按钮无法提交

javascript - knockoutjs afterAdd 和 afterRender 问题

javascript - 尝试为 html 音频播放器提供组件可见性和组件颜色的特定自定义

javascript - 返回结果

jquery - asp.net从静态函数访问控件

knockout.js - knockout : Complex binding with observable arrays and checkboxes

javascript - jquery remove 函数是否也删除了 knockout 绑定(bind)?