繁体   English   中英

Knockoutjs 单击绑定在嵌套的 foreach 中不起作用

[英]knockoutjs click binding not working in nested foreach

所以我有一个非常奇怪的问题,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">&#215;</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() 之外,一切正常; 我想绑定到标签列表中的每个链接的函数。 浏览器只是跳起来并在 url 中添加一个哈希字符。 Firebug 也没有显示任何绑定错误。

div 容器有 with:searchViewModel 的原因是因为整个页面都有一个主视图模型。 但这应该无关紧要,因为它正在项目的每个其他页面上工作。

我唯一能想到的是点击绑定 $root.addFilter 是错误的,但我试过只是 addFilter,其中萤火虫给出错误“addFilter 未定义;”

我尝试了 $parent 和 $root。

有没有人有什么建议?

一个想法我有过。 您的addFilter函数需要一个参数( tag ),但您没有在绑定中传递任何内容:

<a href="#" data-bind="click:$root.addFilter">

这可能是问题吗?

也许是这样的:

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

有助于?

我遇到了类似的问题,起初我跑了data-bind="click:function() { console.log($parents) }" 请注意,它的$parents不是$parent 我寻找上下文,我需要的上下文看起来像data-bind="click:$parents[1].onCardClick"

我在 ko 上下文中找到并尝试使用如下示例。 $parentContext.$parent.onButtonClick

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM