以下是我在viewModel中添加函数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));
});
但是当我尝试调用此函数时。我收到错误消息"错误:无法解析bindings.Message:ReferenceError:clickAction未定义;"
以下是我调用该函数的方法。
<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对象生成viewmodel。那么如何在点击时调用一个函数?
答案 0 :(得分:2)
在foreach
循环内部,您将绑定当前数组项的属性。但是,您可以使用特殊变量$parent
,$parents
和$root
来绑定更高级别的对象。
在您的情况下,您应该能够绑定$root.clickAction
以跳转到根视图模型。
关于特殊上下文变量的进一步参考:http://knockoutjs.com/documentation/binding-context.html