0

我正在尝试做下一件事:

<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)被调用时,element作为参数结束ElementViewModel(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 () {                
            [...]
        }
    }
}
4

1 回答 1

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>

如果这不起作用,您的替代方法是使用自定义绑定。

于 2013-01-24T10:05:34.600 回答