无法分析Knockout.js中的绑定
面对共同的“约束问题”。下面是viewmodel无法分析Knockout.js中的绑定,knockout.js,Knockout.js,面对共同的“约束问题”。下面是viewmodel function DetailListViewModel() { this.details = new Details(); this.productdetails = ko.observableArray([]); this.show = function (item) { $.getJSON("Products.json", {}, function (data) {
function DetailListViewModel() {
this.details = new Details();
this.productdetails = ko.observableArray([]);
this.show = function (item) {
$.getJSON("Products.json", {}, function (data) {
this.productdetails.push(this.details.init(data));
});
};
}
function Details() {
this.author = ko.observable();
this.text = ko.observable();
this.init = function (temp) {
return {
author: temp.Author,
text: temp.Text
};
};
}
var TaskListViewModel = {
tasks: ko.observableArray([]),
addTask: function () {
self.tasks.push(new Task({ BomID: this.BomID() }, { CreatedBy: this.CreatedBy() }));
},
ShowProductInfo: function (item) {
DetailListViewModel.show(item);
}
};
$(function () {
$.getJSON("Tasks.json", function (allData) {
TaskListViewModel.tasks.push(toKoObserable($.parseJSON(allData.GetDataResult).RESULT.DOCUMENT));
ko.applyBindings(TaskListViewModel);
var DetailListViewModel = new DetailListViewModel();
ko.applyBindings(DetailListViewModel);
});
function toKoObserable(blog) {
return {
BomID: ko.observable(blog[0].BOMID),
CreatedBy: ko.observable(blog[0].CreatedBy)
};
}
});
我得到了这个错误
Uncaught Error: Unable to parse bindings.
Message: ReferenceError: author is not defined;
Bindings value: text:author
我的HTML是:
<h3 data-bind="text:author">/h3>
/h3>
我非常确定,如果您更改了详细信息,那么一切都会按照您的预期工作。我不知道为什么您的详细信息列表包含单个详细信息实例,然后您使用该对象创建一个可观察的详细信息数组。从设计的角度来看,这似乎是不对的。此外,init不会返回可观察的值。尝试按照以下方式进行更改:
function Details(author, text) {
this.author = ko.observable(author);
this.text = ko.observable(text);
}
然后,当您填充详细信息列表时,您将执行以下操作:
function DetailListViewModel() {
this.productdetails = ko.observableArray([]);
this.show = function (item) {
$.getJSON("Products.json", {}, function (data) {
this.productdetails.push(new Details(data.Author, data.Text));
});
};
}
Try,this.author=ko.observable(“”);this.text=ko.可观察(“”);两次应用绑定不是一个好主意。。。你到底想做什么?什么是html结构?提供一个目标元素以将绑定应用于页面的不同部分,或者将视图模型合并为一个并将其应用于页面。您好,谢谢您的评论,但我保留单独视图的单独视图模型,我想参考其他视图模型功能。最初,我将DetailListViewModel保存在单独的js文件中,但它不起作用,所以我考虑将其移动到单个文件中,以查看绑定是否正常工作Hi-Konstantin…谢谢…我做了更改,但仍然收到相同的错误。我在Chrome控制台调试期间看到的是ko.applyBindings(DetailListViewModel);从未被调用…现在修改了代码ko.applyBindings(DetailListViewModel)正在被调用,但仍然是相同的错误…这个问题让我发疯了…你需要实例化一个新的DataListViewModel并调用该模型上的apply绑定。所以你的意思是说它应该是var TaskListViewModel={tasks:ko.observeArray([]),addTask:function(){self.tasks.push(新任务({BomID:this.BomID()},{CreatedBy:this.CreatedBy()}));},ShowProductInfo:function(item){var DetailListViewModel=new DetailListViewModel();DetailListViewModel.show(item);ko.applyBindings(DetailListViewModel);};