0

注:これは 、ObservableArraysに関する質問ではありません。

次のビューモデルがあるとしましょう。

var viewmodel = {
    arrayOfBooleans: [
        ko.observable(false),
        ko.observable(false),
        ko.observable(false)
    ]
}

そしてそのような見方:

<div data-bind="foreach: arrayOfBooleans">
    <button data-bind="click: ????">Set to true</button>
</div>

クリックしたときにオブザーバブルをtrueに設定するforeachために、内部で何ができますか?<button>を使用するdata-bind="click: someFunction"と、最初の引数someFunctiongetsは、配列内のオブザーバブルのラップされていない値(オブザーバブル自体ではない)であり、オブザーバブルに戻ったり、カスタム引数を渡したりする方法はないようです。

4

1 に答える 1

1

それがいくつかのアイデアを与えることを願っています。

var viewmodel = {
  var self = this;
 self.arrayOfBooleans = ko.observableArray([]);

 self.arrayOfBooleans.push(new _newBoolean());
 self.arrayOfBooleans.push(new _newBoolean());
 self.arrayOfBooleans.push(new _newBoolean());

 function _newBoolean() { 
   self.one = ko.observable(false);
 }

self.setToTrue = function(index){
   self.arrayOfBooleans()[index].one(true);
 };
 }

ボタンとして使いたい場合

<div data-bind="foreach: arrayOfBooleans">
  <button data-bind="click: $root.setToTrue($parent.arrayOfBooleans.indexOf($data))"> 
   Set to true
  </button>
  <input type=hidden data-bind="value:one" />
</div>

ラジオボタンとして使用したい場合は、はるかに簡単です

<div data-bind="foreach: arrayOfBooleans">
  <span>Set To True</span><input type=radio data-bind="value:one" />
</div>

これが気に入ったら..アップリンクをクリックしてください *または* 問題が解決した場合..これを回答としてマークしてください

于 2013-02-18T04:44:26.107 に答える