1

私はこのようなビューモデルを持っています:

    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:メンバーが定義されていません

これは本当です-viewModelが宣言された時点では、メンバーには何も含まれていません。

どうすればこれを克服できますか?

4

1 に答える 1

5

members()オブジェクトの2番目のプロパティを意味する場合:

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()

于 2012-11-26T12:32:55.227 に答える