Javascript 未捕获引用错误:无法分析绑定
这就是我要做的 使用knock out,我希望有一些只在变量myvalue包含某些内容时出现 这是我的密码 html 我经常遇到的错误是:Javascript 未捕获引用错误:无法分析绑定,javascript,html,web-applications,data-binding,knockout.js,Javascript,Html,Web Applications,Data Binding,Knockout.js,这就是我要做的 使用knock out,我希望有一些只在变量myvalue包含某些内容时出现 这是我的密码 html 我经常遇到的错误是: Uncaught ReferenceError: Unable to parse bindings. Bindings value: visible: myValues().length > 0 Message: myValues is not defined 很可能是因为我添加到脚本标记中的属性defer,这意味着在呈现整个html元素之前不会加载
Uncaught ReferenceError: Unable to parse bindings.
Bindings value: visible: myValues().length > 0
Message: myValues is not defined
很可能是因为我添加到脚本标记中的属性defer,这意味着在呈现整个html元素之前不会加载文件
但是,这很重要,我将在以下三种情况下解释:
1-推迟knokout而不是搜索模型,如下所示
因此,现在搜索模型将包含在呈现HTML元素之前。
但是,这会导致问题,因为它使用knokout代码
Uncaught ReferenceError: ko is not defined
2-延迟搜索模型非knokout
<script type='text/javascript' src="../js/knockout-2.3.0.js" defer="defer"></script>
<script type="text/javascript" src="../js/searchModel.js" ></script>
3-忘了延迟吧
<script type='text/javascript' src="../js/knockout-2.3.0.js" ></script>
<script type="text/javascript" src="../js/searchModel.js" ></script>
也会导致以下问题
未捕获的TypeError:无法读取null的属性“nodeType”
因为脚本将加载到html中,并在创建元素之前尝试绑定该元素
那么,您建议如何解决该问题:)您有以下几种选择: 如注释中所述,您可以使用带绑定的,但在本例中,foreach更为典型 当myValues observableArray为空时,一个最简单的方法是选择一个选项-
<!-- ko if: !myValues().length -->
<span>There is no data yet</span>
<!-- /ko -->
<!-- ko if: myValues().length -->
<p>The length of myValues is - <span data-bind="text: myValues().length"></span></p>
<!-- /ko -->
目前还没有数据
MyValue的长度为-
当然,如果删除第一个无容器绑定,它将具有与您正在查找的相同的效果,将不会验证数组是否为空。这应该适用于您发布的代码
<h2>Welcome to My World :D</h2>
<div data-bind="visible: myValues().length > 0">
You will see this message only when 'myValues' has at least one member.
</div>
<script type='text/javascript'>
ko.applyBindings((new helloModel()).viewModel)
</script>
然后在初始化代码中
<script type='text/javascript'>
ko.applyBindings(new helloModel())
</script>
ko.applyBindings(新helloModel())
你应该试着重新创建这是一个像泰尔修斯所说的,小提琴会有帮助的游戏。这很难实现,但是:视图模型嵌套在函数中。我没有看到任何带有绑定的。根据绑定模型的方式,您可能缺少一个命名空间级别:viewModel.myValues().length您确定回答了正确的问题吗?添加对myValues的另一个引用如何帮助KO在绑定视图模型时查找此属性?如果尚未找到或无法解决此属性,则将对其进行错误评估最佳解决方案将是应用binging in。ready JQUIRY block:)
<!-- ko if: !myValues().length -->
<span>There is no data yet</span>
<!-- /ko -->
<!-- ko if: myValues().length -->
<p>The length of myValues is - <span data-bind="text: myValues().length"></span></p>
<!-- /ko -->
<h2>Welcome to My World :D</h2>
<div data-bind="visible: myValues().length > 0">
You will see this message only when 'myValues' has at least one member.
</div>
<script type='text/javascript'>
ko.applyBindings((new helloModel()).viewModel)
</script>
function helloModel() {
var self = this;
self.myValues = ko.observableArray([]);
self.pushHello = function(data,e) {
self.myValues.push("Hello, world!");
};
//self.myValues.push("some value"); // Now visible
}
<script type='text/javascript'>
ko.applyBindings(new helloModel())
</script>