0

私は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' 

アドレスプロパティのみを設定した場合、このエラーは表示されないため、継承に問題があると考えられます。どんな助けでも大歓迎です。

4

1 に答える 1

1

return before を使用しているため、次の行は実行されません。

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;
});
于 2012-11-14T12:53:16.580 に答える