【问题标题】:Can't get links to work correctly for bootstrap html data-content in popover无法让链接在弹出窗口中正常工作以引导 html 数据内容
【发布时间】:2013-01-28 01:44:12
【问题描述】:

我正在尝试将 html 放入引导弹出框,并且内容显示得很好,但是当我单击弹出框内的链接时,它只会转到触发弹出框的锚标记上的父“OpenRecent”方法。您可以在下面的 data-content html 中看到我尝试调用我想要的函数的不同方式。我怎样才能做到这一点?

<ul id="RecentSearches" class="nav nav-tabs nav-stacked well" data-bind="foreach: CurrentItems">
        <li>
            <div>
                <input type="checkbox" class="checkbox inline" data-bind="value: $data.TransId,
                                                                          checked: $root.ItemsSelected"/>
                <a href="#"
                   data-bind="text: $data.Description + '-' + $data.County,
                              attr: 
                              { 
                                id: $data.TransId,
                                'data-title': $data.Description
                              },
                              click: $root.OpenRecent"
                   data-trigger="hover"
                   rel="popover"
                   data-html="true"
                   data-content="<a data-bind='click: $parent.Print.bind($data)'>Print</a> |
                                 <a data-bind='click: app.RecentSearches.Print.bind($data)'>Print 2</a>
                                 <a data-bind='click: $parent.Email'>Email</a> |
                                 <a data-bind='click: $parent.SaveToPDF'>PDF</a> |
                                 <a data-bind='click: $parent.SavetToCSV'>CSV</a>">
                </a>
            </div>
        </li>
    </ul>

【问题讨论】:

    标签: html twitter-bootstrap knockout.js


    【解决方案1】:

    HTML 是您的data-content 不会被 Knockout 绑定,因为它是后来动态添加的。

    一种选择是添加一种方法来识别链接(类),然后使用unobstrusive approach 添加事件处理程序。

    $("ul").on("click", ".print", function(event) {
         var context = ko.contextFor(this);
         context.$root.Print(context.$data);
         event.preventDefault();
    });
    

    我不确定为什么会调用您的 OpenRecent 函数。在我看来,引导程序在触发它的元素之外创建了弹出框。因此,这不会是弹出框的父级。如果你仍然对那部分有疑问,那么也许你可以让它在 jsFiddle 中工作。

    这是一个不显眼的处理程序的小提琴:http://jsfiddle.net/rniemeyer/Edww3/

    【讨论】:

    • 这似乎正确地获取了上下文。我会尝试使用它,如果它对我有用,我会将其标记为正确答案。我仍然想看看其他人是否有更好的仅 html 逻辑而不是使用 javascript。谢谢
    • 主要问题是内容未绑定,因此对其进行常规数据绑定将不起作用。另一种想法是在这里使用我的插件:github.com/rniemeyer/knockout-delegatedEvents 进行委托事件处理。它看起来像:jsfiddle.net/rniemeyer/6GPNH
    • 是的,这有点干净。与您给我的其他方式相比,只需加载大量代码,但我想这取决于我需要在我网站的其他部分使用此逻辑的频率。我想我会尝试一下,看看结果如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    相关资源
    最近更新 更多