如何将初始化数据传递给角度模块?

时间:2015-12-21 17:26:40

标签: angularjs

我的远程服务器上有一个webmethod,返回一个JSon对象。 所述json对象包含模块正常工作所需的字符串。

那么,有没有办法将某些东西传递给角度模块? 一个想法可能是在模块初始化内执行http请求:

$scope.init = function(){
        $http.get ()
            ...
         then(){
               $scope.mydata = result;
         }

};

但那将是异步的......

1 个答案:

答案 0 :(得分:1)

如果您担心填写$ scope.mydata变量的HTTP请求的异步性质,那么您需要将其包含在路径的RESOLVE中。

我在当前项目中使用UI-ROUTER:

(function() {
    'use strict';

    angular
        .module('capps.core')
        .config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
            $urlRouterProvider.otherwise('/');

            $stateProvider
                .state('home.capps', {
                    url: '/',
                    template: '<ui-view/>',
                    data: {
                        requireLogin: true
                    },
                    resolve:{
                        resolveFunction: resolveFunction
                    }
                });
        }
    ]);

    resolveFunction['$inject'] = ['$http'];
    function resolveFunction($http) {
        return $http.get(API_URL)
                .then(function(res) {
                    console.log(res);
                });
    }
})();

然后在您的控制器中,您可以通过“解决方案”&#39;作为依赖...然后使用它来分配给$ scope.myData。

...
angular.controller('myController', myController);

myController.$inject = ['resolveFunction', '$scope'];
function myController(resolveFunction, $scope) {
    $scope.mydata = resolveFunction.data;
    console.log(mydata);
};