如何将典型控制器转换为服务/工厂ANGULARJS?

时间:2014-02-19 03:35:03

标签: angularjs angularjs-service

嗨! 我正在做一个webapp,我需要将我的数组共享给我的控制器。 谢谢。!

MyControllers.controller('MyCtrl',['$scope',

function ($scope){
    $scope.items = [{id:1}, {id:2}, {id:3}];

    $scope.addNewItem = function() {
        var newItemNo = $scopeItems.length+1;
        $scope.Items.push({'id':newItemNo});
    };

    $scope.showAddItem = function(Item) {
        return Item.id === $scope.Items[$scope.Items.length-1].id;
    };
}
]);

2 个答案:

答案 0 :(得分:0)

您的代码存在一些问题。

var newItemNo = $scopeItems.length+1;

你可能想要

var newItemNo = $scope.Items.length+1;

谢谢:)

另外,对于你的

MyController.controller 

部分,你想要像

这样的东西
angular.module('appName').controller

此外,您可以将服务注入控制器或将其绑定到$ rootscope,但在您的情况下不应该这样做。 :d

答案 1 :(得分:0)

Angular工厂是单件工厂,因此工厂内的数据可以在所有控制器之间共享。您只需将工厂注入控制器即可。

var myApp = angular.module('myApp');

myApp.factory('myService', function() {
  var _items = [{id:1}, {id:2}, {id:3}];

  return { items : _items };
});

myApp.controller('MyCtrl1',['$scope', 'myService', function ($scope, myService){
  $scope.items = myService.items;
]);

myApp.controller('MyCtrl2',['$scope', 'myService', function ($scope, myService){
  $scope.items = myService.items;
]);