我正在尝试开发一个应用程序,其中一个模块将依赖于第二个模块。在第一个模块运行函数我尝试使用http从服务器填充templatecache和一些数据,但由于http调用是异步的,我的第二个模块将在第一个模块完成之前运行,并且我在结果中未定义。下面的代码会使情况更加清晰
var app = angular.module('main', []).run(["$templateCache",'$http','$timeout', function ($templateCache,$http,$timeout) {
$timeout(function () {
$templateCache.put('ajay', 'ajay');
}, 1000);
}
]);
var secondapp = angular.module('plunker', ['main']);
secondapp.controller('test', function ($scope, $templateCache, $timeout) {
// get me undefined i want to wait until module main is finished running run function
alert($templateCache.get('ajay'));
});
答案 0 :(得分:1)
拥抱异步性:
var app = angular.module('main', []).run(["$templateCache",'$http','$timeout', function ($templateCache,$http,$timeout) {
$templateCache.put('ajay', $http.get("/data/ajay"));
}
]);
var secondapp = angular.module('plunker', ['main']);
secondapp.controller('test', function ($scope, $templateCache, $timeout) {
$templateCache.get('ajay').then(function (data) {
alert(data);
});
});