2013-01-24 34 views
0

我試圖做的下一件事:Knockout.js的foreach爲元素,以新的視圖模型

<div data-bind="foreach: { data: elementsVM.elementsList, as: 'element' }"> 
    <div data-bind="with: new ElementViewModel(element).getElementDetailsByLang(langFilter)"> 
     <h3 data-bind="html: ElementTitle"></h3> 
    </div> 
</div> 

的問題是,當with: new ElementViewModel(element).getElementDetailsByLang(langFilter)被調用時,作爲參數結束到ElementViewModel(Element)element它的整個集合從foreach綁定(elementsVM.elementsList)而不是來自foreach迭代中的當前元素。 elementsVM是ElementsViewModel:

function ElementsViewModel() { 
    var self = this; 

    self.ElementsList = ko.observableArray(); 

    self.getElementsForCategory = function(categoryId) { 
     [...] 
    } 
} 

而且ElementViewModel看起來是這樣的:

function ElementViewModel(Element) { 
    var self = this; 

    self.ElementModel = new ElementModel(Element); 

    self.getElementDetailsByLang = function (lang) { 
     return ko.computed(function() {     
      [...] 
     } 
    } 
} 

回答

1

當你這樣做會發生什麼:

<div data-bind="foreach: { data: elementsVM.elementsList }"> 
    <div data-bind="with: new ElementViewModel($data).getElementDetailsByLang(langFilter)"> 
     <h3 data-bind="html: ElementTitle"></h3> 
    </div> 
</div> 

你的選擇是使用一個custom binding,如果不起作用。

+0

我不能使用$數據,因爲我嵌套了foreach。我會嘗試使用自定義綁定。謝謝! – VladN

+0

我知道自定義綁定正在成爲我的「轉到」響應,但它對於很多情況非常有幫助! –

相關問題