所以我有一个非常奇怪的问题,即敲除js点击绑定没有附加到锚标签。其他 data-bind="" 有效,但点击绑定无效。
下面你可以看到 HTML 和 viewmodel js 文件的一部分
var tag = function (data) {
this.count = data.Count;
this.id = data.Id;
this.title = data.Title;
this.tagGroup = data.TagGroup;
};
var tagContainer = function (data) {
this.tagList = $.map(data.Tags, function (item) { return new tag(item); });
this.letter = ko.observable(data.Letter);
};
var searchViewModel = function(){
var self = this;
self.tagContainerList = ko.observableArray([]);
self.addFilter = function (tag) {
//move tag to active filters and do some more cool stuff here
};
};
<div id="modal-all-tags" data-bind="with:searchViewModel">
<ul data-bind="foreach:tagContainerList">
<li>
<span data-bind="text:$data.letter()"></span>
<ul data-bind="foreach:tagList">
<li><a href="#" data-bind="click:$root.addFilter"><span data-bind="text:title"></span></a></li>
</ul>
</li>
</ul>
<a class="close-reveal-modal">×</a>
</div>
基本上它是一个模态弹出窗口,当用户单击页面上的链接时会加载它。我向服务器发送一个请求,它返回一个标签容器列表,每个标签容器都有起始字母和要在字母下方呈现的标签列表,如下所示: A a word 1 a word 2 B b word 1 b word 2 C c单词 1 c 单词 2
等等...
字母正确呈现 A、B、C 并且每个字母都在它们下方呈现正确的标签列表,并且 text:title 正确显示。
除了 addFilter(); 一切正常 我想绑定到 taglist 中的每个链接的函数。浏览器只是跳起来并在 url 中添加一个哈希字符。Firebug 也没有在绑定上显示任何错误。
div 容器具有 with:searchViewModel 的原因是因为整个页面都有一个主视图模型。但这无关紧要,因为它正在项目的所有其他页面上工作。
我唯一能想到的是点击绑定 $root.addFilter 是错误的,但我尝试了 addFilter ,其中萤火虫给出了错误“addFilter is not defined;”
我尝试了 $parent 和 $root。
有没有人有什么建议?