1

以下は、ビューモデルに関数 ClickAction を追加する方法です

$.getJSON("api/BrowseCategory/Get", function (data) {
    categoryViewModel = ko.mapping.fromJS(data);
    categoryViewModel.clickAction = function () {
            alert('hi');
        }
    ko.applyBindings(categoryViewModel, $('.categories-gallery .frame').get(0));
});

しかし、この関数を呼び出そうとすると、「エラー:バインディングを解析できません.メッセージ:参照エラー:クリックアクションが定義されていません;」というエラーメッセージが表示されます。

これが私が関数を呼び出す方法です。

<section class="categories-gallery">
                        <div class="holder">
                            <div class="frame">
                                <article class="category-spacer"></article>
                                <!-- ko foreach: $data -->
                                <!-- ko foreach: ProductVariants -->
                                <article class="category" data-bind="click: clickAction,attr: { 'data-uuishlist-product-variant': JSON.stringify(ko.mapping.toJS($data)) }, css: { active: (($parentContext.$index() * $parent.ProductVariants().length) + $index()) == 1 }">
     </article>
                                <!-- /ko -->
                                <!-- /ko -->
                            </div>
                        </div>
</section>

knoutoutjs マッピング プラグインを使用して、json オブジェクトからビューモデルを作成しています。では、クリック時に関数を呼び出すにはどうすればよいですか?

4

1 に答える 1

2

ループ内でforeachは、現在の配列項目のプロパティに対してバインドしています。ただし、特別な変数$parent$parents、およびを使用して、$rootより高いレベルのオブジェクトをバインドできます。

$root.clickActionあなたの場合、バインドしてルート ビュー モデルにジャンプできるはずです。

特別なコンテキスト変数に関する詳細なリファレンス: http://knockoutjs.com/documentation/binding-context.html

于 2012-10-20T21:43:39.310 に答える