2013-07-11 2 views
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(); 

} ]); 
+0

это не то, как работает Javascript – Ven

+2

@ user1737909 очевидно. Но я думаю, было бы полезно, если бы вы объяснили, как это работает. – Sprottenwels

ответ

1

Функция resetModel вызывает вызов только конструктора и не делает ничего действительного экземпляра, на который вызван метод. Предполагается, что функция resetModel изменит свойства на этот, как вы уже это делали в конструкторе и в методе обновления. Вот простой способ сделать это:

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(); 

} ]); 
+0

Это имеет смысл - спасибо за вашу помощь .. –