controller将$ scope值传递给另一个控制器

时间:2015-10-19 20:48:39

标签: angularjs

我是AngularJS的新手,如何将输入范围从第一个控制器传递到第二个控制器以获取数据$ scope.requestURL

我搜索了服务方法,但我不知道如何应用它。

    .controller('ZipController', ['$scope', function($scope) {
    $scope.zipCode = '10028';

    $scope.setURL = function() {
    $scope.requestURL = 'http://congress.api.sunlightfoundation.com/legislators/locate?zip=' + $scope.zipCode + '&apikey=xxxxx';
    };

    }])

   .controller('ListController', ['$scope', '$http', 
   function($scope, $http) {
   $http.get($scope.requestURL).success(function(data) {
   console.log(data.results);
   $scope.congress = data.results;
   });
   }]);

2 个答案:

答案 0 :(得分:1)

以下是一个快速解决方案:..您不必为您的案例使用$ http核心服务:

您还可以阅读有关角度恒定服务的更多信息..

(function(angular) {
    var app = angular.module('myServiceModule', []);
    app.controller('ZipController', function($scope, myService) {
        $scope.zipCode = '10028';
        myService.setFunc($scope.zipCode);
        myService.zipCode = $scope.zipCode;
    });
    app.controller('ListController', function($scope, myService) {
        $scope.requestURL = myService.getFunc();
    });
    app.factory('myService', function() {
        var zipCode;
        var setFunc = function(zip) {
            zipCode = zip;
        };
        var getFunc = function() {
            return 'http://congress.api.sunlightfoundation.com/legislators/locate?zip=' + zipCode + '&apikey=xxxxx'
        };
        return {
            zipCode: zipCode,
            setFunc: setFunc,
            getFunc: getFunc
        };
    });
})(window.angular);

答案 1 :(得分:0)

尝试将其设置为$ rootScope.requestURL并从第二个控制器访问它。