angularjs - 在 Controller 之间共享模型

标签 angularjs angularjs-service

我正在爬上 angular.js 的学习曲线,并尝试了解将所有内容放在哪里。

在这种情况下,我想知道使用服务在 Controller 之间共享模型是否是最佳实践。

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:

“以 Angular 思考”:像这样共享模型是很好的做法吗?

最佳答案

我强烈建议使用服务配方来完成类似的事情。另外,不要简单地制作一个将模型公开为服务的服务。即不要这样做:

.service('UserService', function(){

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

});

相反,让服务成为与模型交互的接口(interface):

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

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

});

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

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

关于angularjs - 在 Controller 之间共享模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25629263/

相关文章:

angularjs - 为什么我的自定义过滤器不起作用?

javascript - 使用 angularjs 进行数据绑定(bind)和添加到列表

javascript - Angularjs- 保留不存在的 dom 元素的数据 (ngIf=false)

angularjs - 链接 ngResource $promise 成功和错误

angularjs - 在 $http 回调中更新服务变量

angularjs - 在AngularJS中将一个服务注入(inject)另一个服务

javascript - Angular 服务问题

javascript - 使用 ng-repeat 映射嵌套值

html - 如何在 Angularjs 中计算数组值内部的总和?

javascript - Angularjs 如何使数据在所有范围内可用