У мене є додаток wep, яке використовує обидва нокаути.бібліотеки js і require.js. Припустимо, що у мене є модель "Користувач" і модель "Клієнт". Я хочу, щоб модель клієнта успадковувалася від користувача, тому зараз у мене є такий код:
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"
Коли я встановлюю тільки властивість адреси, я не бачу цю помилку, тому я вважаю, що щось не так з успадкуванням. Будь-яка допомога дуже вітається.
Відповіді:
1 для відповіді № 1Наступний рядок ніколи не буде виконано, оскільки ви використовуєте повернення до:
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;
});