javascript – knockoutjs点击绑定不工作在嵌套foreach

前端之家收集整理的这篇文章主要介绍了javascript – knockoutjs点击绑定不工作在嵌套foreach前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我有一个非常奇怪的问题,一个knockoutjs点击绑定没有附加到锚标签.其他的数据绑定=“”工作,但不是点击绑定.

下面你可以看到HTMLviewmodel js文件的一部分

  1. var tag = function (data) {
  2. this.count = data.Count;
  3. this.id = data.Id;
  4. this.title = data.Title;
  5. this.tagGroup = data.TagGroup;
  6. };
  7. var tagContainer = function (data) {
  8. this.tagList = $.map(data.Tags,function (item) { return new tag(item); });
  9. this.letter = ko.observable(data.Letter);
  10. };
  11.  
  12. var searchviewmodel = function(){
  13. var self = this;
  14.  
  15. self.tagContainerList = ko.observableArray([]);
  16.  
  17. self.addFilter = function (tag) {
  18. //move tag to active filters and do some more cool stuff here
  19. };
  20.  
  21.  
  22. };
  23.  
  24. <div id="modal-all-tags" data-bind="with:searchviewmodel">
  25. <ul data-bind="foreach:tagContainerList">
  26. <li>
  27. <span data-bind="text:$data.letter()"></span>
  28. <ul data-bind="foreach:tagList">
  29. <li><a href="#" data-bind="click:$root.addFilter"><span data-bind="text:title"></span></a></li>
  30.  
  31. </ul>
  32. </li>
  33. </ul>
  34.  
  35. <a class="close-reveal-modal">&#215;</a>
  36. </div>

基本上它是一个模态的弹出窗口,当用户单击页面上的链接时它被加载.
我向服务器发送一个请求,它给我一个标签容器的列表,每个都有起始信和一个标签列表,如下所示:
一个
一个字1
一个字2

b字1
b字2
C
c字1
c字2

等等…

这些字母正确呈现A,B,C,并且每个文本都会以正确的方式显示正确的标题列表:文本:标题显示.

除了addFilter();功能,我想绑定到标签列表中的每个链接.浏览器刚刚跳转,并向网址添加了一个哈希字符. Firebug也没有显示绑定的任何错误.

div容器具有以下原因:searchviewmodel是因为整个页面都有一个主视图模型.但这并不重要,因为它正在项目的每个其他页面上工作.

我唯一可以想到的是,点击绑定$root.addFilter是错误的,但我尝试只是addFilter其中firebug给出错误“addFilter没有定义”;

我试过$parent和$root.

有没有人有什么建议?

解决方法

有一个想法我曾经有过.你的addFilter函数需要一个参数(tag),但是你没有在绑定中传递任何东西:
  1. <a href="#" data-bind="click:$root.addFilter">

这可能是问题吗?

也许是一些沿着

  1. <a href="#" data-bind="click:function() { $root.addFilter($data) }">

有助于?

猜你在找的JavaScript相关文章