我有这个指令:
app.directive('changemonth', function($animator) {
return {
link : function($scope, element, attrs) {
element.bind("click", function() {
if(element.attr('class').search('disabled') == -1) {
// récupération du calendrier :
if(element.attr('class').search('day') != -1)
var calendar = angular.element(element.parent().parent());
else
var calendar = angular.element(element.parent().parent().next().children()[1]);
var animator = $animator($scope, attrs);
animator.hide(calendar);
setTimeout(function() {
$scope.$apply(attrs.changemonth);
animator.show(calendar);
}, 500);
}
});
}
};
});
用attrs.changemonth
,我调用一个函数(可以改变),例如这个:
$scope.next = function() {
var tmpMonth = $scope.monthsLabels.indexOf($scope.monthDisplayed) + 1;
var tmpYear = $scope.yearDisplayed;
if(tmpMonth==12) {
tmpMonth = 0;
tmpYear = parseInt($scope.yearDisplayed) + 1;
}
getCalendar(tmpMonth, tmpYear);
$scope.monthDisplayed = $scope.monthsLabels[tmpMonth];
$scope.yearDisplayed = tmpYear.toString();
};
所以这个函数调用另一个getCalendar()
你可以在这里看到:
function getCalendar(month, year) {
$http({
method : "GET",
url : 'http://my_url/getCalendar',
params : {
group_id : $scope.group_id,
month : month,
year : year
}
})
.success(function(data) {
$scope.calendar = data;
});
}
getCalendar()
用于$http
从数据库中获取日历。
我的问题是我想在指令中使用 animator 之前等待响应$http
,像这样,只有在加载内容时才会显示我的日历。
我听说$q
并承诺。但我不知道如何在这种非常特殊的情况下使用它。
如果这里有人有想法,那就太棒了。