0

以下は、ほとんど機能する単純な角度の工場です。モデルをリセットしたいので、' resetModel' というメソッドを追加しようとしましたが、モデル プロパティをリセットしていないため機能しません。誰かが理由を説明してもらえますか?

app.factory('programLocationModel', [ "$rootScope", function ($rootScope)
{

    var ProgramLocationModel = function()
    {
        this.name            =  "All Programmes";
        this.description     =  "";
        this.category        =  "";
        this.series          =  {};
        this.channel         =  {};
        this.duration        =  "";
        this.airTime         =  "";
        this.seriesName      =  "";
        this.url             =  "../assets/images/nhkw_thumbnail.jpg"; //Default client logo

    }

    ProgramLocationModel.prototype.update           = function( data )
    {

        this.name            =  data.name;
        this.description     =  data.description;
        this.category        =  data.category;
        this.series          =  data.series;
        this.seriesName      =  data.seriesName;
        this.channel         =  data.channel;
        this.duration        =  data.duration;
        this.airTime         =  data.airTime;
        this.url             =  $rootScope.resturl + '/graph/' + data.id + '/thumbnail?access_token=' + $rootScope.token;
    }


    ProgramLocationModel.prototype.resetModel = function () {

        ProgramLocationModel();
    }

    return new ProgramLocationModel();

} ] );
4

1 に答える 1

1

あなたの resetModel 関数はコンストラクターを呼び出すだけで、メソッドが呼び出される実際のインスタンスには何もしません。resetModel 関数は、コンストラクターと更新メソッドで既に行っているように、 thisのプロパティを変更することになっています。これを行う簡単な方法は次のとおりです。

app.factory('programLocationModel', [ "$rootScope", function ($rootScope)
{

    var ProgramLocationModel = function()
    {
       this.resetModel();
    }

    ProgramLocationModel.prototype.update           = function( data )
    {

        this.name            =  data.name;
        this.description     =  data.description;
        this.category        =  data.category;
        this.series          =  data.series;
        this.seriesName      =  _seriesName;
        this.channel         =  data.channel;
        this.duration        =  data.duration;
        this.airTime         =  data.airTime;
        this.url             =  $rootScope.resturl + '/graph/' + data.id + '/thumbnail?access_token=' + $rootScope.token;
    }


    ProgramLocationModel.prototype.resetModel = function () {
        this.name            =  "All Programmes";
        this.description     =  "";
        this.category        =  "";
        this.series          =  {};
        this.channel         =  {};
        this.duration        =  "";
        this.airTime         =  "";
        this.seriesName      =  "";
        this.url             =  "../assets/images/nhkw_thumbnail.jpg"; //Default client logo
    }

    return new ProgramLocationModel();

} ] );
于 2013-07-11T14:07:46.170 に答える