我有一个使用knockout.js和require.js库的wep应用程序。假设我有一个“用户”模型和一个“客户”模型。我希望Customer模型继承自User,所以我现在有以下代码:
user.js的
define(['knockout'], function(ko){
return function User(){
var self = this;
self.id = ko.observable();
self.firstname = ko.observable();
self.name = ko.observable();
};
});
Customer.js
define(['knockout', 'model/user'], function(ko, User){
return function Customer(){
var self = this;
self.address = ko.observable();
};
Customer.prototype = new User();
});
当我使用以下代码创建客户时:
var c = new Customer();
c.id(1);
c.firstname("John");
c.name("Doe");
c.address("Unknown");
然后我在Chrome控制台中收到以下错误:
Uncaught TypeError: Object #<Customer> has no method 'id'
当我只设置address属性时,我没有看到这个错误,所以我假设继承有问题。非常欢迎任何帮助。
答案 0 :(得分:1)
以下行永远不会被执行,因为你之前使用了return:
Customer.prototype = new User();
将customer.js
更新为:
define(['knockout', 'model/user'], function(ko, User){
function Customer (){
var self = this;
self.address = ko.observable();
};
Customer.prototype = new User();
return Customer;
});