Angular调用控制器

时间:2015-11-10 18:07:08

标签: angularjs angular-services

我正在尝试用2个控制器和1个服务来编写一些非常原始的角度代码。

因此,当我从控制器1调用共享服务并更新数据时,我想在我的控制器2 $scope中使用它,以便控制器2 $scope值可以反映在我的DOM上。

App.controller('oneCtrl', function($scope, $uibModal, $log, sharedProperties) {
// Call a new DOM element to so that ModalInstanceCtrl will be called
// Once controller 2 finishes, I want to update a $scope variable here
// $scope.projectList = getProjectList();
});

App.controller('ModalInstanceCtrl', function ($scope, $uibModalInstance, sharedProperties) {
// This is a new modal which uses sharedProperties
// Update setProjectList() in service
});

App.service('sharedProperties', function() {
        var projectList = new Array();

        return {
            getProjectList: function() {
                return projectList;
            },
            setProjectList: function(value) {
                projectList.push(value);
            },
        }
    });

一旦控制器2调用setProjectList()。我想使用getProjectList()

自动更新控制器1中的$ scope值

请让我知道我该怎么做?如果需要进一步的详细信息,也请告诉我。

1 个答案:

答案 0 :(得分:0)

角度服务是一个单身,所以如果您更改服务数据,只要您调用该服务,它就会被反映出来。

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

  app.controller('FirstCtrl', function($scope, userData) {
   $scope.favoriteBook = userData.favoriteBook;
    $scope.getFavoriteBook = function(){
    $scope.favoriteBook = userData.favoriteBook;
   }
  });

   app.controller('SecondCtrl', function($scope, userData) {
    $scope.changeBook = function(){
     userData.favoriteBook = 'The Hobbyt';
    }
   });


  app.factory('userData', function(){

   var favoriteBook = 'Harry Potter';

   return{
     favoriteBook : favoriteBook
  }

 })

这里有一个公开对象的服务,你可以在第二个控制器中更改该对象的值,并在第一个控制器中看到它。调用changeBook(),然后调用getFavoriteBook()

这是吸虫: the plunker