我在工厂开了一些模态窗口 示例:
openModal: function (urn, id, templateId, controller) {
$http({
method: 'GET',
url: urn
}).success(function (data, $scope) {
$("#" + id).append($compile(data)($scope));
modalInstance = $uibModal.open({
templateUrl: templateId,
controller: controller,
backdrop: 'static',
keyboard: false
});
}).error(function () {
alert("error");
return null;
});
document.getElementById('main').classList.add("blur");
},
在此函数和视图附加到DOM后,我想调用另一个函数 从另一个服务女巫我注入openModalfactory。
示例:
$map.autocomplite('wizardsearch');
$map.getAutoUserLocationPath();
你能解释一下我必须通过$ q做到这一点吗? 谢谢你的回答。
答案 0 :(得分:1)
延迟应该让函数返回一个promise
,你可以用它来完成这个功能
请看下面的代码
openModal: function (urn, id, templateId, controller,$q) {
var def = $q.defer();
$http({
method: 'GET',
url: urn
}).success(function (data, $scope) {
def.resolve(data);
$("#" + id).append($compile(data)($scope));
modalInstance = $uibModal.open({
templateUrl: templateId,
controller: controller,
backdrop: 'static',
keyboard: false
});
}).error(function (err) {
def.reject(err)
alert("error");
});
document.getElementById('main').classList.add("blur");
return def.promise;
}
使用它称之为:
openModel().then(function(){
//do what you want here
})
答案 1 :(得分:0)
我想你想要这样的东西:
let deferred = this.$q.defer();
let promises = [];
promises.push(service.something);
this.$q.all(promises).then(/*Do something*/);
return deferred.promise;