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时,成员不包含任何内容.
我怎么能克服这个?
如果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().