У меня есть простая функция, которая загружает данные в {{my_content}}
. Проблема в том, что я хочу выполнить сценарий jQuery myJqueryFunction()
после того, как {{my_content}}
был обновлен. Код ниже работает, за исключением того, что myJqueryFunction()
, кажется, был вызван раньше (или вообще не был?) {{my_content}}
был обновлен. Какие-либо предложения?Как я могу вызвать функцию jQuery после обновления данных модели?
$scope.showContent = function(){
$http({
url: "my/url",
method: "POST"
})
.success(function (data, status, headers, config) {
$scope.my_content = data;
myJqueryFunction();
})
.error(function (data, status, headers, config) { $scope.status = status; });
};
Нет причин, по которым это не сработает, пока срабатывает обработчик успеха. Если вы можете сделать Plunkr или JSFiddle, чтобы показать проблему, я посмотрю, но поскольку я не вижу причин, функция не будет вызываться каждый раз, когда запускается обработчик успеха. – shaunhusain
Он называется, я думаю, но его нужно называть ПОСЛЕ '' {{my_content}} '', который был обновлен. Как я могу гарантировать, что он вызывается только после обновления '' {{my_content}} ''? –
Я нашел хорошую статью о $ scope. $ Apply(), которая объясняет немного больше, чем я знал о том, как это работает: http://jimhoskins.com/2012/12/17/angularjs-and-apply.html Но это действительно зависит от того, что вы ожидаете от функции jQuery, которая может быть выполнена в ответ на угловое изменение. Например, если он считывает информацию, вычисленную браузером, тогда эти данные еще не могут быть обновлены, вам может потребоваться вместо этого использовать $ timeout, как это было предложено, что делает то же самое, что и setTimeout в javascript, но также вызывает $ scope. $ Apply автоматически (или прослушивать конкретные события браузера о применении CSS и т. д.) – shaunhusain