2013-03-19 219 views
0

我有AA模型,我從基本上包含類別列表,每個類別中的JSON數據映射,是一個列表控件。所以,在我的UI我有一個包含類別列表的面板,當用戶點擊它時,我將整個類別推到(在加載時)空的可觀察的,以在另一個面板中呈現......點擊功能似乎正在工作,但沒有任何東西使用foreach語句在我的第二列中呈現。任何幫助,將不勝感激。我的JSON數據是一個有點冗長,因此它可能是最好的參考我的小提琴這裏:淘汰賽JS的foreach

http://jsfiddle.net/TU3ps/4/

但這裏是我如何我想的foreach孩子,是我的語法不好的嗎?

 <div class="left">Click any of the below categories to see its controls... 
      <ul data-bind="foreach: Categories"> 
       <li data-bind="click: $parent.catClick"> 
        <span data-bind="text: Text"></span> 
       </li> 
      </ul> 
     </div> 
     <div class="right">Controls within the category clicked... 
      <ul data-bind="foreach: Curr.Ranges"> 
       <li> 
        <span data-bind="text: FieldName" /> 
       </li> 
      </ul> 
     </div> 

有沒有更好的辦法,我應該這樣做呢?基本上,我希望我的右側面板一次只顯示一個集合。我現在想要做的就是顯示字段名,但沒有任何顯示。任何幫助將不勝感激....

回答

1

看起來,如果你想CURR是可觀察的,而不是一個observableArray,而你沒有正確地分配給它:

viewModel.Curr = ko.observable(); 
// Inside your click method 
viewModel.Curr(category); 

您還需要在添加範圍的虛擬財產,初始applyBindings否則淘汰賽炸燬:

viewModel.Curr = ko.observable({ Ranges: [] }); 
+0

好吧,我改變那些了,但foreach語句仍不起作用... – zach 2013-03-19 15:24:42

+0

你的意思是在你的小提琴,或在本地代碼?由於您的小提琴使用raw.github上的映射插件,因爲MIME類型問題(我認爲),因此您不需要在瀏覽器中加載映射插件,因此您需要使用//cdnjs.cloudflare.com/ajax/libs/ knockout.mapping/2.3.5/knockout.mapping.js我已經更新了你的小提琴,它至少運行沒有任何錯誤:http://jsfiddle.net/manzanotti/TU3ps/11/ – 2013-03-19 15:40:14

+0

謝謝,這工作。我也失蹤了:viewModel.Curr = ko.observable({Ranges:[]}); .... – zach 2013-03-19 15:56:38