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)が呼び出されたときに、 foreach 反復の現在の要素ではなく、foreach バインディング () のコレクション全体がelementパラメーターとして終了することです。elementsVM は ElementsViewModel です。ElementViewModel(Element)elementsVM.elementsList

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 に答える