2016-10-17 21 views
1

配列内にko.observablsArrayをバインドするにはどうすればよいですか?私は、次のViewModelを持っている:knockout.js配列内に配列をバインド

function GetBegriffsKetteViewModel() { 
    var self = this; 
    self.Begriffsketten = ko.observableArray(); 
    self.letzterBegriff = ko.observable(0); 
    self.aktuelleKette = -1; 
    } 

var Begriffskette = function() { 
    var self = this; 
    var begriffe = new ko.observableArray(); 
    var begriffBez = new ko.observableArray(); 
} 

そして、私のhtmlで私は、次のdiv持っている:私はこのコードを実行した場合

<div id="ausgewaehlteKetten" data-bind="foreach : Begriffsketten"> 
    <div class="row"> 
     <div class="col-md-2" id="innerDivForEach" data-bind="foreach : begriffBez"> 
      <span data-bind="text: $data" ></span> 
     </div> 
    </div> 
</div> 

を私は次のエラーを取得する:

ReferenceError: begriffBez is not defined 

です配列内の配列をバインドする方法はありますか?私は間違って何をしていますか?

おかげ

トーマス

+0

私はちょうど私のHTMLの例では1行が –

+0

+0

が欠落していることがわかりました申し訳ありませんが、あなたの質問に新しいHTMLを追加しました。 – iblamefish

答えて

3

まず、あなたはnewでノックアウトオブジェクトを作成しないでください。

  • 間違っ:var x = new ko.observable();
  • 正しい:あなたは変数は、オブジェクトのプロパティになりたい場合はvar x = ko.observable();

第二に、あなたがオブジェクトインスタンス(thisに割り当てる必要があります - あるいは、あなたのケースで、self)。

些細な点:慣習的に、コンストラクタだけがJSのキャプティブ文字で始まる必要があります。したがって、通常のプロパティなので、小文字のbを持つbegriffskettenになります。あなたがそれを行うたら、それはビューをレンダリングするとき

function BegriffsKetteList() { 
    var self = this; 
    self.begriffsketten = ko.observableArray(); 
    self.letzterBegriff = ko.observable(0); 
    self.aktuelleKette = ko.observable(); // better use an observable here 
} 

function Begriffskette() { 
    var self = this; 
    self.begriffe = ko.observableArray(); 
    self.begriffBez = ko.observableArray(); 
} 

、ノックアウトはbegriffBezbegriffeプロパティを見ることができます。

<div id="ausgewaehlteKetten" data-bind="foreach: begriffsketten"> 
    <div class="row"> 
     <div class="col-md-2" id="innerDivForEach" data-bind="foreach: begriffBez"> 
      <span data-bind="text: $data" ></span> 
     </div> 
    </div> 
</div> 
+0

ありがとうございました。私は一日中、それを動作させようとしていたが、常にHTMLを見ていた。 –

+0

これで動作しますが、新しい要素を配列に追加すると、ビューは新しい項目で更新されません。これもアーカイブする方法はありますか?私は観察者がこれを行うと思うと思う。 –

+0

はい、そうです。新しい要素をどのように追加するかによって異なります。これについて質問があります。検索してみてください。公式文書には、観測可能な配列にアイテムを追加する方法も示されています。あなた自身で最初に見つけようとする。 – Tomalak

関連する問題