Есть конечно один вариант с помощью таймера:
Также можно внутри таймера проверять если данные пришли то выполнять, если нет то еще подождать.
Может быть есть более изящное решение?
++ еще через 1 час...
Нашел вариант который меня в принципе устраивает:
т.е. перенести запрос к серверу в функцию линковки и в его коллбеке уже выполнить код.
Есть еще варианты?
// ...
link: function (scope, element) {
setTimeout(function () {
var html = '';
angular.forEach(scope.orders, function (ord) {
html += '<h4>' + ord.name + '</h4>';
});
element.append($compile(html)(scope));
console.log('end of directive');
}, 1000);
}
// ...
Также можно внутри таймера проверять если данные пришли то выполнять, если нет то еще подождать.
Может быть есть более изящное решение?
++ еще через 1 час...
Нашел вариант который меня в принципе устраивает:
// ...
.directive('orderDrct', ['$compile', 'Order',
function ($compile, Order) {
return {
restrict: 'A',
link: function (scope, element) {
Order.query({id: 'all'}, function(orders) {
scope.orders = orders;
var html = '';
angular.forEach(scope.orders, function (ord) {
html += '<h4>' + ord.name + '</h4>';
});
element.append($compile(html)(scope));
});
}
};
}
])
// ...
т.е. перенести запрос к серверу в функцию линковки и в его коллбеке уже выполнить код.
Есть еще варианты?
Есть директива ng-Focus которая может вызвать таймер или еще чего-нибудь.
К сожалению нету события потери фокуса, поэтому тоже велосипед.
К сожалению нету события потери фокуса, поэтому тоже велосипед.
На stackoverflow.com ткнули носом на то место в доках где это указанно:
Методы принимают следующие параметры:
HTTP GET "class" actions: Resource.action([parameters], [success], [error])
non-GET "class" actions: Resource.action([parameters], postData, [success], [error])
non-GET instance actions: instance.$action([parameters], [success], [error])
Success вызывается с (value, responseHeaders) аргументами.
Error вызывается с (httpResponse) аргументом.