angular ng-click 从第二次点击开始起作用
angular ng-click works from the second click
我正在使用 ng-click
打开模式并调用函数:
<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()
函数:
$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 returns 更正来自服务器的数据,并在 $scope.professions
上更新它(我知道是因为下拉列表中显示的数据)
但是 for 循环因浏览器错误而失败:
"TypeError: Cannot read property 'professions' of undefined"
然后,如果我关闭模态框并再次单击它,它工作正常并且没有错误。
但是当我刷新时,第一次点击错误 returns 并从第二次点击消失。
知道如何解决吗?
不要在 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 请求,然后打开模式 window 并执行您需要的其余内容。
我遇到了同样的问题,并在它工作后调用该方法。
在我的页面中,我创建了一个工厂并将所有 ajax 调用保存在其中。现在都写在controller部分了,那么factory和service有什么用
我正在使用 ng-click
打开模式并调用函数:
<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()
函数:
$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 returns 更正来自服务器的数据,并在 $scope.professions
上更新它(我知道是因为下拉列表中显示的数据)
但是 for 循环因浏览器错误而失败:
"TypeError: Cannot read property 'professions' of undefined"
然后,如果我关闭模态框并再次单击它,它工作正常并且没有错误。 但是当我刷新时,第一次点击错误 returns 并从第二次点击消失。
知道如何解决吗?
不要在 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 请求,然后打开模式 window 并执行您需要的其余内容。
我遇到了同样的问题,并在它工作后调用该方法。
在我的页面中,我创建了一个工厂并将所有 ajax 调用保存在其中。现在都写在controller部分了,那么factory和service有什么用