这几天看了MVC4 / 5 的一些东西, 基本上和 MVC 3都一样, 看起来毫不费力气, 项目还没有正式开工, 每天都是看文档,了解技术. 闲着无聊就把 knockout js 给看了一遍. 今天在看 SignalR的时候, 随手写了段测试代码,发现 Knockout 的虚拟标签有点问题, 一开始我是这样写的:
<table> <tr data-bind="foreach:msgs"> <td data-bind="text:name"></td> <td data-bind="text:msg"></td> </tr> </table>
发现循环是发生在 tr 内部的 td 上的, 即生成的是列, 而不是行.
换成:
<table> <!-- ko foreach: msgs --> <tr> <td data-bind="text:name"></td> <td data-bind="text:msg"></td> </tr> <!-- /ko --> </table>
居然提示:
Cannot find closing comment tag to match: ko foreach: msgs
仔细看了一遍HTML, 没有发现没有闭合的标签,语法也没有错. td 里加内容也无济于事.
定位到 knockout-3.1.0.debug.js 的 getVirtualChildren 方法上, 传入的参数是一个 Comment ,即那个虚拟标签.
在看一下它的父对像是谁:
下面紧接着有一个 while 循环:
while (currentNode = currentNode.nextSibling) {
目的是去循环的判断和这个 Comment 在同一级上的 Element 是不是一个 Comment , 也就是在同一级中找到这个虚拟标签的关闭标签,, 很不幸, 在上面那段HTML 中,没有找到虚拟标签的闭合,不过表面上看来,它确实是有一个对应的闭合.
这是为什么?
返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/script/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索signalr
, 标签
, 循环
, knockout
, mvc4
, knockout js
, 初学mvc4
, knockoutjs前端技术knockout
, 对象控件mvc4
, 一个
, MVC4网站制作教程
, MVC4制作网站
闭合
虚拟机virtualbox、virtualbox创建虚拟机、virtualbox克隆虚拟机、virtualbox导入虚拟机、virtualbox删除虚拟机,以便于您获取更多的相关知识。