Javascript 敲除pureComputed错误绑定
我有以下代码:Javascript 敲除pureComputed错误绑定,javascript,knockout.js,Javascript,Knockout.js,我有以下代码: var AddressModel = function (list) { var self = this; self.selectedItem = ko.observable(null); self.list = ko.observableArray(ko.utils.arrayMap(list, function (item) { return { firstName: item.firstName,
var AddressModel = function (list) {
var self = this;
self.selectedItem = ko.observable(null);
self.list = ko.observableArray(ko.utils.arrayMap(list, function (item) {
return {
firstName: item.firstName,
lastName: item.lastName,
address: item.address
};
}));
self.Test = ko.pureComputed(function () {
var firstname = self.selectedItem().firstName;
}
};
ko.applyBindings(new AddressModel(initialData));
当我运行代码时,在测试函数中我得到以下错误:
未捕获类型错误:无法处理绑定“value:function(){return ViewModelToJSON}”
消息:无法读取未定义的属性“firstName”
但是如果我在测试中放入self.selectedItem()
,我会得到所有项的属性,但我只想要名字
InitialData是一个简单的json:
var initialData = [
{
firstName: "Jimmy",
lastName: "Jimbo",
address: "111 Jimmy's Street, Jimtown"
},
{
firstName: "Don",
lastName: "Mob boss",
address: "222 Mafia Street, Jimtown"
}
];
有人能帮我吗?当您定义一个computed时,它会运行其内部函数一次,以获取其初始值并计算依赖项 这意味着您的计算值必须能够在定义时正确计算 在您的情况下,会发生以下情况:
self.selectedItem = ko.observable(null);
self.Test = ko.pureComputed(function () {
var firstname = /* self.selectedItem() */ null.firstName;
}
这会引发一个错误:
var选择=null;
试一试{
选择。名字
}捕捉(错误){
控制台日志(错误消息);
}
您能发布完整的javascript代码吗?仅此而已,initialData是一个简单的json:var initialData=[{名字:“吉米”,名字:“吉姆博”,地址:“吉姆敦吉米街111号”},{名字:“唐”,名字:“暴徒老板”,地址:“吉姆敦黑手党街222号”};您需要检查null
,因为最初,selectedItem
是null
,并且没有firstName
属性。您可以将self.selectedItem
设置为null
,并且您设置的任何地方都没有设置self.selectedItem
的值。那么,如何通过调用这个self.selectedItem()
来获取所有属性呢?您是否从其他地方为selectedItem
设置值?