【发布时间】:2012-05-15 05:04:11
【问题描述】:
到目前为止,我一直在使用 knockoutJS 和 jQuery,没有任何问题,但是仅在我的 html 中包含prototype.js 文件,在启动应用程序时会导致几个错误。我在开始时运行 jQuery.noConflict() 以避免 jQuery 和prototypejs 之间的冲突,但显然它并没有解决问题。代码及错误如下:
<script type="text/javascript" src="js/jquery/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery-contextmenu.js"></script>
<script type="text/javascript" src="js/jquery/jquery.tmpl.js"></script>
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
<!-- knockout library -->
<script type="text/javascript" src="js/knockout-1.2.1.js"></script>
<script type="text/javascript" src="js/knockout.mapping-latest.js"></script>
/////////////
currentServerTree[key].serverName 不是函数 anonymous()knockout-1.2.1.js(第 11 行)
Za(a=" { text: scoringFunctio...n = __ko_value; } } } ", b=Object { preferenceName=d(), selectedServer=d(), selectedDatabase=d(), more...})knockout-1.2.1.js (line 11)
J()knockout-1.2.1.js (line 44)
j()knockout-1.2.1.js (line 34)
j(e=function(), d=null, b=Object { disposeWhenNodeIsRemoved=textarea#inScoreFunction.inputField, read=function(), disposeWhen=function()})knockout-1.2.1.js (line 36)
J(e=textarea#inScoreFunction.inputField, d=null, b=Object { preferenceName=d(), selectedServer=d(), selectedDatabase=d(), more...}, a="data-bind")knockout-1.2.1.js (line 45)
ua(a=textarea#inScoreFunction.inputField)knockout-1.2.1.js (line 45)
g(a=[input#singleTable.inputField Constant, input#joinTable.inputField Variable, th, 16 more...], b=function())knockout-1.2.1.js (line 8)
ua(e=Object { preferenceName=d(), selectedServer=d(), selectedDatabase=d(), more...}, d=table#attributesTable4)knockout-1.2.1.js (line 45)
()index.jsp (line 1052)
[Break On This Error]
...rn "+a))();return(new Function("sc","with(sc) { return ("+a+") }"))(b)},Fa:funct...
如果我删除prototype.js 行,一切都会正常运行。知道可能导致问题的原因吗?谢谢!
【问题讨论】:
-
你真的不应该在开发过程中使用缩小的库。既然已经有了 jQuery,为什么还需要原型?!
-
我得到了一些预先写好的原型代码,我被要求在应用程序中实现(据说已经完成,因此是缩小版),我宁愿不必转换为 jQuery,尽管我假设这是可能的。
-
你使用 jQuery 吗?你在任何地方都使用 $ 吗?什么是 currentServerTree?
-
是的,我确实使用 jQuery。我已经消除了'$' 的所有实例并用'jQuery' 替换它们。 currentServerTree 是一个 var,分配了一个可淘汰的 observable
-
该错误听起来好像 serverName 未设置或不是可观察的,您要么在代码中调用 serverName() 要么绑定是......我不知道为什么除非某些 Ajax 调用正在更新您的模型并且未将其映射到可观察对象,否则与原型/jquery 有任何关系。一个更全面的例子会有所帮助......
标签: javascript jquery prototypejs knockout.js