Javascript 敲除引用错误-属性在';现在

Javascript 敲除引用错误-属性在';现在,javascript,knockout.js,Javascript,Knockout.js,我正在使用JQuery进行AJAX调用,并从MVC控制器发送JSON。当成功回调运行时,我将其传递给视图模型上的可观察对象。因此,我在视图模型上有一个名为list的属性,我发送了以下JSON: { Items: [ { .. }, { .. }] } 模板和容器如下所示: <div data-bind="template: {name:'Template', data:list}"></div> <script type="text/html" id="Temp

我正在使用JQuery进行AJAX调用,并从MVC控制器发送JSON。当成功回调运行时,我将其传递给视图模型上的可观察对象。因此,我在视图模型上有一个名为list的属性,我发送了以下JSON:

{ Items: [ { .. }, { .. }] }
模板和容器如下所示:

<div data-bind="template: {name:'Template', data:list}"></div>

<script type="text/html" id="Template">
    <section class="List">
            <ul id="MyList" data-bind="foreach:Items">
Items是正确的,它被正确地分配到视图模型,并且我验证了Items属性确实不是未定义的。我在另一个视图中有相同的代码,但它在那里工作,而不是在这里。知道原因吗?这个错误是由什么引起的

编辑:我有一个视图模型,看起来像这样,而且是绑定到这样:

function viewModel() {
   var self = this;
   self.list = ko.observable(null);
}

$.ajax({
.
.
   context: model, //reference to view model, which is a valid reference
   success: function(d) {
     this.list(d);  //d is JSON laid out above
   }
});

谢谢。

以下功能应该可以使用:

<div data-bind="template: {name:'Template', data:list}"></div>

<script type="text/html" id="Template">
    <section class="List">
            <ul id="MyList" data-bind="foreach:Items">
                <span data-bind="text: value"></span>
            </ul>
    </section>
</script>

init
函数中,执行ajax调用并绑定数据

以下方法应该有效:

<div data-bind="template: {name:'Template', data:list}"></div>

<script type="text/html" id="Template">
    <section class="List">
            <ul id="MyList" data-bind="foreach:Items">
                <span data-bind="text: value"></span>
            </ul>
    </section>
</script>

init
函数中,执行ajax调用并绑定数据

我不确定这意味着什么,但我认为您应该得到一个错误,因为“d”不是上面的列表,而是函数的参数。您不应该将视图模型存储在变量中并更改以下内容:

 success: function(d) {
     d.list(d);  //d is JSON laid out above
 }
为此:

 success: function(d) {
     viewModel.list(d);  // d is JSON laid out above
 }

我不确定这意味着什么,但我认为您应该得到一个错误,因为“d”不是上面的列表,而是函数的参数。您不应该将视图模型存储在变量中并更改以下内容:

 success: function(d) {
     d.list(d);  //d is JSON laid out above
 }
为此:

 success: function(d) {
     viewModel.list(d);  // d is JSON laid out above
 }

当绑定被应用时它存在吗?你没有提供太多的代码,但是从你所说的,如果你通过ajax获取项目,并且绑定在ajax调用之前被应用,那么它就不存在了。是的,Keith可能是对的,尝试创建一个fiddle,我们应该能够确定它。当应用绑定时它存在吗?您没有提供太多代码,但是从您所说的,如果您通过ajax获取项目,并且在ajax调用之前应用了绑定,那么它就不存在了。是的,Keith可能是对的,尝试创建一个小提琴,我们应该能够确定它。是的,这是一个打字错误,我已经改为这个,这是模型(通过上下文)。谢谢你的提示。是的,这是一个输入错误,后来我改成了这个,这就是模型(通过上下文)。感谢您的关注。空数据是问题的原因;当我这样做时:self.list=ko.observable({Items:[]});它工作得很好。空数据是问题的原因;当我这样做时:self.list=ko.observable({Items:[]});它工作得很好。