我在按钮点击时从我的自定义指令调用一个函数。
这是我在JSP中的代码
<input type="button" value="button" text="{{item.id}}" data-href="divSlide" show-notifications>
这是我的自定义指令
hello.directive("showNotifications", ["$interval", function($interval, $scope) {
return {
restrict: "A",
link: function(scope, elem, attrs) {
//On click
$(elem).click(function() {
console.log('before');
scope.$parent.getJSON(scope.text);
if ($('tr#' + $(this).data("href")).is(":visible")) {
$('tr#' + $(this).data("href")).remove();
} else {
console.log('after');
$(this).closest('tr').after('<tr id="' + $(this).data("href") + '"><td colspan="5">' + $('#' + $(this).data("href")).html() + '</td></tr>');
}
});
},
scope:{
text: "@text"
}
};
}]);
这是我的功能
$scope.getJSON= function(id){
jsonService.getJSONData(id).then(function(data){
$scope.data= [];
$scope.data= data['dataList'];
console.log('insidejson');
}
});
};
当我执行代码时,控制台按以下顺序打印日志,
before
after
insidejson
但理想情况下应该是
before
insidejson
after
为什么在执行函数之前在函数调用之后执行下一个语句?
我做错了什么?
答案 0 :(得分:1)
功能
jsonService.getJSONData(id).then(function(data){
$scope.data= [];
$scope.data= data['dataList'];
console.log('insidejson');
}
});
是一个异步函数。因此它将在最后执行