javascript - 使用 KnockoutJS 计算的数组 - 抛出未定义的错误

标签 javascript knockout.js

我有一个看起来像这样的 View 模型:

    var viewModel = {

        name: results.name,
        members: ko.observableArray([]),
        users: ko.computed(function () {
            return ko.utils.arrayFilter(members(), function (item) {
                return (item.type == 'User');
            });
        }),
        groups: ko.computed(function () {
            return ko.utils.arrayFilter(members(), function (item) {
                return (item.type == 'Group');
            });
        })
    };

但是,我在 computed 部分遇到错误:

Uncaught ReferenceError: members is not defined

这是真的 - 在声明 viewModel 时,成员不包含任何内容。

我怎样才能克服这个问题?

最佳答案

如果 members() 是指对象的第二个属性:

var viewModel = {
    name: results.name,
    members: ko.observableArray([])
};

viewModel.users = ko.computed(function () {
     return ko.utils.arrayFilter(viewModel.members(), function (item) {
         return (item.type == 'User');
     });
 });
viewModel.groups = ko.computed(function () {
     return ko.utils.arrayFilter(viewModel.members(), function (item) {
         return (item.type == 'Group');
     });
 });

注意:

  • 您不能在文字定义中引用同一对象的另一个属性。这就是我将定义分为 3 个部分的原因。

  • members() 替换为 viewModel.members()

关于javascript - 使用 KnockoutJS 计算的数组 - 抛出未定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13564773/

相关文章:

javascript - 使 <a> 标签触摸友好

javascript - knockout 映射到 JSON - 不能忽略嵌套的子项

javascript - knockout 多选 selectedOptions 包含值而不是对象

c# - JsonConvert.DeserializeObject 特殊字符 未终止的字符串。预期的分隔符 :

c# - 如何使用 knockoutjs 实用程序将 JS 对象转换为 JSON 以将 json 数据发送到 asp.net mvc 中的服务器?

javascript - 单击事件期间更改的复选框值未被表单数据拾取

javascript - 如何在JavaScript中替换字符串中的特定字符

javascript - 在worker.addEventListener中发送另一个postMessage

javascript - 在 jQuery 中创建多个相同的元素

javascript - ko.bindingHandlers.if.update 函数在 KnockoutJS 3.1 中被删除?