按链开始几个功能

时间:2017-05-22 10:32:23

标签: javascript angularjs

我在工厂开了一些模态窗口 示例:

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做到这一点吗? 谢谢你的回答。

2 个答案:

答案 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;