У меня есть модальный сервис, который я использую для своих Модалей. В службе я передаю область действия контроллера, так что вид модала имеет доступ к объекту области видимости. Когда я обновляю область с помощью функции, значение никогда не обновляется.Angularjs не обновляет область при вызове функции?
Я попытался использовать $ apply, но eror, который я получаю, состоит в том, что цикл дайджеста уже запущен.
Так вот код
.controller('LoginCtrl', ($scope, $location, $rootScope, Modal, $log, $http) ->
$scope.placeholder = {
email: 'Email Address',
password: 'password'
}
$scope.login = (email, password)->
$http.post('/dashboard/login', {
email: email,
password: password
}).error((data, status)->
$scope.invalidPassword = "lalala"
$scope.$apply()
).success (data, status) ->
$rootScope.userAuth = true
$rootScope.userInfo = data
$state.go('dashboard')
$modalInstance.close()
Modal.custom("modal-login2.jade",$scope, #here is where I pass the controller's scope as the scope for the Modal
keyboard: false
backdrop: 'static'
)
)
Тогда мой нефритовый
div
script(type='text/ng-template' id="modal-login2.jade")
.modal-header
h3.modal-title Login into Dashboard
.modal-body
form(name="loginForm", novalidate).form-horizontal
.row.alert.alert-danger(ng-show='invalidPassword')
span(translate) The specified e-mail or password was invalid !
.row.form-group
label.col-xs-3.control-label(for='email') E-mail
.col-xs-9
input.form-control(required, ng-model='email', type='email', name='email', placeholder="{{ placeholder.email }}")
.row.form-group
label.col-xs-3.control-label(for='password') Password
.col-xs-9
input.form-control(required, ng-minlength=6, ng-model='password', type='password', name='password', placeholder="{{ placeholder.password }}")
.modal-footer
.col-xs-offset-2.col-xs-3
button.btn.btn-primary(type='submit', translate,
ng-click='login(email, password)', ng-disabled='loginForm.$invalid || waitText') Sign in
Вместо $ apply использовать '$ timeout' без указания времени, он лучше работает, потому что $ timeout schedule change на модели для следующего дайджеста вместо того, чтобы форсировать его - что дает вам дайджест уже в ошибке цикла – maurycy
Как я должен использовать $ таймаут, чтобы отложить применение или задержать изменение переменной области видимости? – grasshopper
использовать $ timeout, так как вы бы использовали $ appyly, '$ timeout (function() {$ scope.model = value})' – maurycy