1

と の 2 つの配列を含む 1 つの ViewModel がarr1ありarr2ます。arr2に含まれるものを正確に含めたいと思いarr1ます。どうやってやるの?

var myViewModel = function() {
    this.arr1 = ko.observableArray([]);
    this.arr2 = ko.observableArray(this.arr1); //Doesn't work - I need to bind arr2 to changes in arr1
}
4

2 に答える 2

3

配列の要素への参照を保存する場合は、オブザーバブルをアンラップする必要があります。

var myViewModel = function() {
    this.arr1 = ko.observableArray([]);
    this.arr2 = ko.observableArray(this.arr1());
}

クローン配列が必要Sliceな場合は、配列の関数を使用します。

var myViewModel = function() {
    this.arr1 = ko.observableArray([]);
    this.arr2 = ko.observableArray(this.arr1.slice(0)); 
}
于 2012-11-12T09:51:45.900 に答える
1

関数またはを使用して、arryaのコピーを作成できるようになったら、最初の配列を2番目の配列にコピーする場合ko.toJSko.toJSON

var myViewModel = function() {
    this.arr1 = ko.observableArray([]);
    this.arr2 = ko.observableArray(ko.toJS(this.arr1)); 
}

毎回2番目の配列を変更したい場合は、最初の配列を変更するときにサブスクライバーを使用します

var myViewModel = function() {
    this.arr1 = ko.observableArray([]);
    this.arr2 = ko.observableArray([]);
    this.arr2.subscribe(function(newValue) {
       this.arr2(ko.toJS(this.arr1));
    });
}
于 2012-11-12T10:07:44.333 に答える