0

これに似たデータを含むobservableArrayビューモデルが呼び出されたとしましょう...movies

[{
    Id: 12345,
    Title: 'Movie1',
    Year: 2010,,
    UserMovies: [{
        Id: 8
        IsWatched: false,
        Rating: 3.5,
        UserId: 'e1e9c075-1ded-4e7d-8d30-d5d1fbd47103'
    }]
},{
    Id: 12345,
    Title: 'Movie2',
    Year: 2010,,
    UserMovies: [{
        Id: 11
        IsWatched: false,
        Rating: 4,
        UserId: 'e1e9c075-1ded-4e7d-8d30-d5d1fbd47103'
    }]
}]

マッピング プラグインを使用でき、すべてのプロパティが になることはわかっていますが、observable1 つのプロパティのみを監視可能にしたい場合はどうでしょう。UserMoviesだけを作成することは可能observableArrayですか?どうすればそれを行うことができますか?

4

2 に答える 2

1

次のように、ko.mapping プラグインにプレーンな値としてマップさせたいオブジェクトのプロパティを指定できます。

var mapping = {
    'copy': ["propertyToCopy"]
}
var viewModel = ko.mapping.fromJS(data, mapping);

定義したモデルごとにこれを行う必要があります。これは非常に面倒な作業であり、モデルの性質によっては、そもそもプラグインの主な利点を台無しにしてしまう可能性があります (データ モデルのクライアント側を再定義する必要はありません)。

于 2012-12-19T07:15:14.330 に答える
0

配列内の各項目をループし、一時変数に格納し、監視可能な配列UserMoviesでオーバーライドすることができます。UserMoviesこのようなもの:

for (var i = 0; i < movies().length; i++) {
        var tempUserMovies = movies()[i].UserMovies;
        movies()[i].UserMovies = ko.observableArray();
        for (var j = 0; j< tempUserMovies.length; j++) {
            movies()[i].UserMovies.push(tempUserMovies[j]);
        }
    }

少し醜い方法ですが、そこから一般的なアイデアを得る必要があります。

于 2012-12-18T22:13:00.720 に答える