0

カスタム バインディング ハンドラ「foreachprop」を作成しました

ko.bindingHandlers.foreachprop = {
transformObject: function (obj) {
    var properties = [];
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            properties.push({ key: key, value: obj[key] });
        }
    }
    return properties;
},
init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
    var value = ko.utils.unwrapObservable(valueAccessor()),
        properties = ko.bindingHandlers.foreachprop.transformObject(value);
    ko.applyBindingsToNode(element, { foreach: properties });
    return { controlsDescendantBindings: true };
}
};

オブジェクトを反復処理する場合

<div data-bind="foreachprop: sections"></div>

これは機能しますが、コンテナレス コントロールを使用すると、同じデータに対して機能しません

<!-- ko foreachprop: sections --> <!-- /ko -->

カスタム バインディング ハンドラーに連続性のない制御フローを使用する方法

Jsfiddle は新しいhttp://jsfiddle.net/E6xq2/5/を作成しました

4

1 に答える 1

3

ドキュメントを見てください:

http://knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html

まず、Knockout に仮想要素へのバインドを許可するように指示します。

ko.virtualElements.allowedBindings.foreachprop = true;

次に、必要に応じてバインディングを書き直して、仮想要素 API を使用します。

于 2013-06-25T11:12:23.663 に答える