Javascript 未捕获引用错误:无法分析绑定

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元素之前不会加载

这就是我要做的

使用knock out,我希望有一些只在变量myvalue包含某些内容时出现

这是我的密码

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>