在控制器之间共享模型

时间:2014-09-02 17:43:13

标签: angularjs angularjs-service

我正在攀登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:

'思考角度':分享这样的模型是个好习惯吗?

1 个答案:

答案 0 :(得分:2)

我强烈建议您使用服务配方。此外,不要简单地创建将模型公开为服务的服务。即这样做:

.service('UserService', function(){

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

});

相反,让服务成为与模型交互的界面:

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

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

});

并将模型值设为您的对象表示:

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