このjsfiddleには、私が働きたいことの簡単な例があります。それはすべて正常に動作しています。しかし、いくつかのループなどでこれらの配列を作成するより良い方法があるように思えます。私は一日中努力してきており、成功していません。それは、私はそれを動作させるために実行するために必要なものブードゥー教 Knockoutjsで計算されたオブジェクトのobservableArrayを設定するためのより良い方法
- 場合、誰かが私を伝えることができます。
ここは、フィドルからのコードです。
ビュー:
<table>
<tbody>
<tr>
<td></td>
<!-- ko foreach: topvals -->
<td >
<input type="text" data-bind="value: val"/>
</td>
<!-- /ko -->
</tr>
<tr>
<td><input type="text" data-bind="value:sidevals()[0].val"/></td>
<!-- ko foreach: intersections()[0] -->
<td><span data-bind="text: val"></span></td>
<!-- /ko -->
</tr>
<tr>
<td ><input type="text" data-bind="value:sidevals()[1].val"/></td>
<!-- ko foreach: intersections()[1] -->
<td><span data-bind="text: val"></span></td>
<!-- /ko -->
</tr>
</tbody>
</table>
のViewModel:
function ViewModel() {
this.topvals = ko.observableArray([
{ val: ko.observable(6) },
{ val: ko.observable(1) },
{ val: ko.observable(1) },
{ val: ko.observable(1) }
]);
this.sidevals = ko.observableArray([
{ val: ko.observable(1) },
{ val: ko.observable(1) },
{ val: ko.observable(1) }
]);
this.intersections = ko.observableArray([
[
{ val: ko.computed(function() { return this.topvals()[0].val() * this.sidevals()[0].val(); }, this) },
{ val: ko.computed(function() { return this.topvals()[1].val() * this.sidevals()[0].val(); }, this) },
{ val: ko.computed(function() { return this.topvals()[2].val() * this.sidevals()[0].val(); }, this) },
{ val: ko.computed(function() { return this.topvals()[3].val() * this.sidevals()[0].val(); }, this) }
],
[
{ val: ko.computed(function() { return this.topvals()[0].val() * this.sidevals()[1].val(); }, this) },
{ val: ko.computed(function() { return this.topvals()[1].val() * this.sidevals()[1].val(); }, this) },
{ val: ko.computed(function() { return this.topvals()[2].val() * this.sidevals()[1].val(); }, this) },
{ val: ko.computed(function() { return this.topvals()[3].val() * this.sidevals()[1].val(); }, this) }
]
]);
}
ko.applyBindings(new ViewModel());
topval、sideval、および定数で行う必要のある適度に複雑な方程式があるので、私は "交差点"を抽象化することができれば特に役に立ちます。私はまだそれを理解していません: -/ – jgonyer
jsfiddle依存関係にKOを手動で追加することを確認してください..ここではまったく動作しません。 – user2864740