哪种方法更好地在控制器之间交换数

时间:2014-08-21 07:10:18

标签: javascript angularjs frontend

在控制器之间发送数据使用服务。但更好的是什么? 在控制器上使用$on,在服务时使用$broadcast; 或者只是javascript对象? (Exp:

myapp.factory('MyService', function(){
    var obj = {};

    return{
        setObject: function(value){
            obj.value = value;
        },

        getObject: function(){
            return obj;
        }
    };
});

1 个答案:

答案 0 :(得分:1)

您可以使用相同的服务在两个控制器之间交换数据 例如:

myapp.controller('myController', ['$scope','MyService'
function ( $scope,myService) {
   var obj={};
   obj=myService.setObject();
   $scope.obj=obj;
}]);

myapp.controller('myController2', ['$scope','MyService'
function ( $scope,myService) {
   var obj2={};
   obj2=myService.setObject();
   $scope.obj2=obj2;
}]);

 myapp.factory('MyService', function(){
    var obj = {};

    _setObject = function (value) {
      obj.value = value;
      return obj;
    }

    _getObject = function () {
        return obj;
    }

    return {
        setObject : _setObject ,
        getObject :_getObject 
    }
});
当一个控制器更改对象时,

控制器包含服务对象的引用,另一个控制器对象自动更改,因为它们共享该服务对象的相同引用