Kim*_*mpo 9 javascript jquery asp.net-mvc-3 knockout-2.0 knockout.js
所以我有一个非常奇怪的问题,一个knockoutjs点击绑定没有附加到锚标签.其他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>
Run Code Online (Sandbox Code Playgroud)
基本上它是一个模态弹出窗口,当用户单击页面上的链接时会加载它.我向服务器发送请求,它返回一个标签容器列表,每个标签容器都有起始字母和要在字母下面呈现的标签列表,如下所示:字a 1字2 B字1 b字2 C c字1 c字2
等等...
这些字母正确呈现A,B,C,并且每个字母都获得正确的标记列表,并在文本下方显示:标题正确显示.
一切都有效,除了addFilter(); 我希望绑定到taglist中每个链接的函数.浏览器只是跳起来并向网址添加一个哈希字符.Firebug也没有在绑定上显示任何错误.
div容器具有with:searchViewModel的原因是因为整个页面都有一个主视图模型.但这并不重要,因为它正在处理项目的每个其他页面.
我能想到的唯一的事情是点击绑定$ root.addFilter是错误的,但我尝试只是addFilter,其中firebug给出错误"addFilter not defined;"
我尝试了$ parent和$ root.
有没有人有什么建议?
Mar*_*son 15
有人以为我有过.你的addFilter函数需要一个parameter(tag),但你没有在绑定中传递任何东西:
<a href="#" data-bind="click:$root.addFilter">
Run Code Online (Sandbox Code Playgroud)
这可能是问题吗?
也许有些东西:
<a href="#" data-bind="click:function() { $root.addFilter($data) }">
Run Code Online (Sandbox Code Playgroud)
有助于?
| 归档时间: |
|
| 查看次数: |
9042 次 |
| 最近记录: |