javascript - knockout 导致无法解析 foreach 循环中的绑定(bind)属性

标签 javascript html knockout.js

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

我一直在关注 knockout 教程,并尝试自己做一些事情,但即使我基本上有相同的代码,也会出现错误。

<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>

我正在调用的服务返回以下结果: [{"contentId":"1b07790c","contentName":"test"},{"contentId":"1b07790c","contentName":"test"},{"contentId":"1b07790c","contentName": “测试”}]

这是直接从 Firebug 控制台输出的错误: 错误:无法解析绑定(bind)属性。 消息:ReferenceError:标题未定义; 属性值: 值:标题

最佳答案

你不应该得到这样的错误,因为此时 tasks数组应该为空,并且 knockout 不应生成 <li>标签。确保您正在初始化 tasks数组 []或与 nothing不是这样的[""]

您也可以尝试使用空 Task 来初始化任务对象:

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

关于javascript - knockout 导致无法解析 foreach 循环中的绑定(bind)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13047473/

相关文章:

php - javascript 框不显示 - 值

javascript - Knockout.js 默认事件绑定(bind)与使用 jQuery 事件委托(delegate)的自定义绑定(bind) .on() - 性能和 yield ?

javascript - JavaScript 中的 Frameborder 制作 iframe

javascript - TVML/tvOS : Template background?

html - 是否有标准的复制粘贴方法可以安全地将 SWF 放入网页中?

javascript - KnockoutJS - 打印 html 片段

javascript - 为什么在加载 knockoutJs 时调用下拉列表的订阅事件?

javascript - JavaScript 中的公牛与奶牛

javascript - Javascript 中的 "Uncaught TypeError: x.toUpperCase is not a function"

javascript - Bootstrap 带下拉列表的内联列表