淘汰赛js:是否可以从HTML标签iteself中将绑定对象附加到HTML元素

时间:2018-06-20 11:53:18

标签: jquery knockout.js

如果我在淘汰赛中有一个foreach循环:

<!-- ko foreach: messageModels() -->


                    <li>
                        <a data-bind="click:$parent.startChat.bind(), css: unreadMessagesCount() > 0 ? 'unread' : 'nothing'" style="cursor: pointer" href="#" >
                            <div class="media">
                                <div class="pull-left">
                                    <img class="media-object img-circle" src="assets/images/ici-avatar.jpg">
                                    <!-- ko if: unreadMessagesCount() > 0 -->
                                    <span class="badge badge-red" data-bind="text:unreadMessagesCount()">1</span>
                                    <!-- /ko -->
                                </div>
                                <div class="media-body">
                                    <p class="media-heading"><span  data-bind="text:friend.userName()">Ing. Imrich Kamarel</span> <span class="time" data-bind="text: $parent.convertTime(messages()[messages().length - 1].dateCreated())">12:44</span></p>
                                    <span class="message" data-bind="text:messages()[messages().length - 1].message()">Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</span>
                                    <div class="chat-actions">
                                        <span class="mark-unread" title="Mark as unread"><i class="fa fa-circle-o"></i></span>
                                        <span class="archive" title="Archive"><i class="fa fa-times"></i></span>
                                    </div>
                                </div>
                            </div>
                        </a>
                    </li>

                    <!-- /ko -->

如果我使用jquery选择器在foreachloop中保留了li标签,是否有可能获得由foreach循环绑定到它的对象?

1 个答案:

答案 0 :(得分:1)

是的,可以使用ko.dataFor。例如:ko.dataFor($("li")[0])返回绑定到您的第一个列表项的视图模型。

但是,如果您遵循敲除的所需架构模式,那么您就不需要在生产代码中真正使用ko.dataFor了。我经常使用ko.dataFor,但主要是为了调试目的。

您可能想解释为什么,您需要弄清楚元素的绑定上下文,因为可能有更好的解决方案。