Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript knockout无法分析foreach循环中的绑定属性_Javascript_Html_Knockout.js - Fatal编程技术网

Javascript knockout无法分析foreach循环中的绑定属性

Javascript knockout无法分析foreach循环中的绑定属性,javascript,html,knockout.js,Javascript,Html,Knockout.js,编辑:回答我自己,错误是因为旧版本的淘汰,始终使用最新版本,并检查现有版本 我一直在遵循淘汰赛教程,并试图自己做一些事情,但得到了错误,即使我基本上有相同的代码 <ul data-bind="foreach: tasks"> <li> <input data-bind="value: title" /> </li> </ul> <script type="text/javascript"> (

编辑:回答我自己,错误是因为旧版本的淘汰,始终使用最新版本,并检查现有版本

我一直在遵循淘汰赛教程,并试图自己做一些事情,但得到了错误,即使我基本上有相同的代码

<ul data-bind="foreach: tasks">
<li>
    <input data-bind="value: title" />
</li>
</ul>

   <script type="text/javascript">
        (function () {
            function Task(data) {
                this.title = ko.observable(data.contentName);
            }

            function TaskListViewModel() {
                // Data
                var self = this;
                self.tasks = ko.observableArray([]);

                // Load initial state from server, convert it to Task instances, then populate self.tasks
                $.getJSON('<%= Url.Action("GetContentList", "TranslateContentMenu") %>',
                    {
                        languageId: $('#LanguageIdNameValuePairs').val()
                    },  function (allData) {
                    var mappedTasks = $.map(allData, function (item) { return new Task(item) });
                    self.tasks(mappedTasks);
                });
            }

            var test = new TaskListViewModel();
            console.log(test);
            ko.applyBindings(new TaskListViewModel());
        }())
</script>
(功能(){ 功能任务(数据){ this.title=ko.observable(data.contentName); } 函数TaskListViewModel(){ //资料 var self=这个; self.tasks=ko.observearray([]); //从服务器加载初始状态,将其转换为任务实例,然后填充self.tasks $.getJSON(“”, { languageId:$('#LanguageIdNameValuePairs').val() },函数(所有数据){ var mappedTasks=$.map(所有数据,函数(项){返回新任务(项)}); 自我任务(mappedTasks); }); } var test=new TaskListViewModel(); 控制台日志(测试); 应用绑定(新的TaskListViewModel()); }())
我调用的服务返回以下结果: [{“contentId”:“1b07790c”,“contentName”:“test”},{“contentId”:“1b07790c”,“contentName”:“test”},{“contentId”:“1b07790c”,“contentName”:“test”}]

这就是firebug控制台中的错误: 错误:无法分析绑定属性。 消息:ReferenceError:未定义标题;
属性值:value:title

正如@Artem在评论中指出的,这在他构建的JSFIDLE中确实有效。我能说的唯一原因是你的HTML格式不好。你写道:

<ul data-bind="foreach: tasks">
<li>
    <input data-bind="value: title" />
</li>
Knockout不喜欢格式错误的HTML。你应该试试:

<ul data-bind="foreach: tasks">
<li>
    <input data-bind="value: title" />
</li>
</ul>

您不应该得到这样的错误,因为此时
任务
数组应该是空的,而knockout不应该生成
  • 标记。确保您正在使用
    []
    不使用任何东西初始化
    任务
    数组,而不是使用类似的
    [“”]

    您还可以尝试使用空的
    任务
    对象初始化任务:

    self.tasks = ko.observableArray(new Task());
    

    我犯的错误是因为我使用的是knockout 1.2.1,到今天为止的最新版本是2.1.0,升级knockout使其工作

    您的代码适用于我:。我认为你没有发布的html标记有问题。在哪个绑定中出现错误?我忘记了代码块中的end ul标记,因此它没有包含在内。我已经附上了我收到的错误消息,出于某种原因,它似乎不理解title是一个任务对象,并且它失败了,在ajax请求得到响应之前……我自己刚刚修复了错误,这是由于旧的淘汰版本。。。。自我提示:先检查版本!非常感谢您的时间和帮助!缺少ul是因为我忘记将其包含在代码块中,不幸的是,这不是问题所在。但是它是一个更大系统的一部分,所以故障可能在其他地方。正如你所看到的,错误是由于旧版本的淘汰,所以,我的坏!非常感谢您的时间和帮助!我也这么做了,除了检查版本号,我几乎什么都试过了。。。。非常感谢您的时间和帮助!