0

我正在尝试将 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>
4

1 回答 1

1

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

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

$("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/

于 2013-01-28T02:31:14.507 回答