我是knockout.js的新手,在 foreach 部分遇到绑定问题。我收到错误:
未捕获错误:无法解析绑定。 消息:ReferenceError:未定义hideSearchElements; 绑定值:单击:hideSearchElements
这是html:
的施法 <div id="searchResults" data-bind="visible: searchIsVisible">
<label id = "lblSearchResults">select a template:</label>
<div data-bind="foreach: titles">
<div data-bind="text: Title"></div>
<div data-bind="click: hideSearchElements">hide</div>
</div>
来自viewModel的一个exert:
var viewModel = function () {
this.searchIsVisible = ko.observable(true);
this.showSearchElements = function () {
this.searchIsVisible(true);
};
this.hideSearchElements = function (
this.searchIsVisible(false); }
}
return new viewModel();
我有 showSearchElements 和 hideSearchElements 在foreach块之外正常工作但在其内部时,我收到了错误。
如果我添加$parent.hideSearchElements
我可以绑定但是会收到错误说:
未捕获TypeError:对象#没有方法'searchIsVisible'
我可能有两个不同的问题,但认为细节可能会有所帮助:)
我很想知道这里发生了什么?有人可以帮忙吗?
指向文档中相关页面的链接也非常有用 - 我现在正在阅读。
由于
答案 0 :(得分:1)
使用$parent.hideSearchElements
时你是对的,因为hideSearchElements
函数在父上下文中。您有异常,因为knockout
调用您的函数时this
有另一个上下文。您必须使用闭包来存储this
指针。更新您的视图模型如下:
var viewModel = function () {
var self = this;
self.searchIsVisible = ko.observable(true);
self.showSearchElements = function () {
self.searchIsVisible(true);
};
self.hideSearchElements = function (
self.searchIsVisible(false); }
}