我正在使用ng-click
打开模态并调用func:
<a class="btn btn-info" data-toggle="modal" data-target="#editWorkerModal" ng-click="workerInfo(worker.id); professionsInfo()">
<i class="glyphicon glyphicon-edit white"></i>
</a>
现在模态已打开,professionsInfo()
函数已运行,但在我第一次点击它时效果不佳。
这是professionInfo()
func:
$scope.professionsInfo = function () {
$http({
url: '/SafetyManager/professions',
method: "GET",
}).success(function (response) {
$scope.professions = response;
for(var i = 0, len1=$scope.info.professions.length; i<len1; i++) {
for(var n=0, len2=$scope.professions.length; n<len2; n++) {
if($scope.info.professions[i].id == $scope.professions[n].id)
$scope.professions[n].disabled = true;
}
}
});
};
func从服务器返回正确的数据,并在$scope.professions
上更新它(我知道因为下拉列表中显示的数据)
但是for循环因浏览器错误而失败:
“TypeError:无法读取属性'expertions'的未定义”
然后,如果我关闭模态并再次单击它工作正常并且没有错误。 但是当我刷新时,错误会在第一次点击时返回,并从第二次点击中消失。
知道怎么解决吗?
答案 0 :(得分:2)
不要在ng-click
上调用两个函数。而是在ng-click
函数中包含其他函数。
例如你的html:
<a ng-click="workerInfo(worker.id);">
<i class="glyphicon glyphicon-edit white"></i>
</a>
控制器:
$scope.workerInfo = function(workerID) {
// Do something
$scope.professionsInfo();
};
$scope.professionsInfo = function() {
// Do something else
}
修改强>
只有在您从$scope.professionsInfo
http响应中获得成功后才能打开您的模态。
或者甚至更好地将两者结合起来,只调用一个首先执行http请求的函数,然后打开模态窗口并完成剩下的所需内容。
答案 1 :(得分:0)
我遇到了同样的问题,并且一旦它正在工作就调用该方法。
在我的页面中,我创建了一个工厂并保留了所有ajax调用。现在一切都写在控制器部分,那么工厂和服务的用途是什么。