Я хочу, чтобы иметь возможность обновлять область в Угловом от функции вне углового.Обновление области снаружи AngularJs без использования «angular.element.scope»
Например, если у меня есть плагин jQuery, который возвращает успешный обратный вызов, я хотел бы иметь возможность обновлять область действия от этого обратного вызова. Каждое решение, которое я видел для этого, включает вызов angular.element(selector).scope
, а затем вызов $apply
в области, возвращаемой. Тем не менее, я также видел много комментариев, указывающих, что это не работает, когда отладочная информация отключена, и поэтому она не рекомендуется, но я не видел альтернативных решений.
Кто-нибудь знает, как обновить область из-за угла Углового без использования angular.element(selector).scope
?
Здесь принято решение в должности:.
«Вы должны использовать $scope.$apply()
, если вы хотите внести какие-либо изменения в значение области из-за пределов контроля AngularJs как в/JavaScript обработчик события JQuery
function change() {
alert("a");
var scope = angular.element($("#outer")).scope();
scope.$apply(function(){
scope.msg = 'Superhero';
});
}
Вот предупреждение, что .scope()
не работает при отладке данных выключены в посте:
«FYI согласно документации с использованием .scope()
требует отладки данных будет включить d, но использование данных Debug в производстве не рекомендуется по соображениям скорости. Решения ниже, кажется, вращаются вокруг сферы() - rtpHarry 5 декабря '14 в 15:12 "
Я не вижу никакого альтернативного решения для использования .scope() в этом посте или в других аналогичных должностях
.AngularJS access scope from outside js function
Спасибо!
Update Одним из возможных решений не используя angular.element(selector).scope
я был назначен объем в контроллере, который я использовал FirstCtrl
на объект окна. Я впрыскивается $window
в контроллер FirstCtrl
и сделал следующее:
$window.FirstCtrlScope = $scope;
Тогда из JQuery или другой JavaScript я мог бы сделать:
var scope=window.FirstCtrlScope;
scope.$apply(function() {
// update the scope
});
Является ли это хорошее решение, или есть более эффективные решения для обновления сферы без использования angular.element(selector).scope
?
Спасибо!