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

Ale*_*lex 1 javascript knockout.js

我有一个看起来像这样的viewmodel:

    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');
            });
        })
    };
Run Code Online (Sandbox Code Playgroud)

但是,我收到了错误computed:

未捕获的ReferenceError:未定义成员

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

我怎么能克服这个?

bfa*_*tto 5

如果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');
     });
 });
Run Code Online (Sandbox Code Playgroud)

注意:

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

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