2014-09-02 146 views
2

我在angular.js中攀登自己的學習曲線,並試圖理解把所有東西放在哪裏。控制器之間的共享模型

在這種情況下,我想知道是否使用服務來共享控制器之間的模型的最佳做法。

var app = angular.module('module', []) 

.factory('shared', ['$http', function ($http) { 
    var factory = { 
    "title" : "Shared Title 2" 
    }; 
    factory.action = function() { 
    // do something with this.title; 
    } 
    return factory; 
}]) 

.controller('MainCtrl', ['$scope','shared', function($scope, shared) { 
    $scope.shared = shared; 
}]) 

.controller('SecondaryCtrl', ['$scope','shared', function($scope, shared) { 
    $scope.shared = shared; 
}]); 

minimal example:

'思維的角度':這是很好的做法,分享這樣的模式嗎?

+0

我認爲你是在正確的軌道上。如果你想共享數據或行爲,你應該使用服務或工廠。 – nacholibre 2014-09-02 17:46:10

回答

2

我強烈建議使用服務配方來做這樣的事情。另外,不要簡單地將服務公開爲模型的服務。即不要做到這一點:

.service('UserService', function(){ 

    return { 
    changePassword: ... 
    updateUsername: ... 
    addEmail: ... 
    }; 

}); 

相反,我們的服務是與模型交互的接口:

.service('UserService', function(User){ 

return { 
    getById: ... 
    getAll: ... 
    save: ... 
}; 

}); 

而且使模型值是你的對象表示:

module.value('User', function(){ 
    //user business logic 
}); 
相關問題