В моей угловой директиве, в обратный вызов, я призываю $apply
к:
- Набор
$scope.model.something
- Invoke
$scope.onAction()
, который используетmodel.something
.
Я делаю это в одном $apply
вызова, но в то время onAction()
вызывается, model.something
еще не определено.
В то же время, после $ apply, {{model.something}}
имеет правильное значение, поэтому model.something обновляется правильно.
Я хочу установить model.something
, поэтому я могу использовать его в onAction()
. Как исправить следующий код?
Вот директива (я пропустил не соответствующий код):
.directive(function() {
return {
scope: {
ngModel: '=',
onAction: '='
},
compile: function (element, attrs) {
return function (scope) {
// This is some callback which is invoked
// outside of digest cycle.
function callback() {
// Here I want to set model and call onAction callback
scope.$apply(function() {
scope.ngModel = 'something';
scope.onAction();
});
}
}
}
};
})
В то же время, мой контроллер выглядит следующим образом:
var MyController = function ($scope) {
$scope.model = {};
$scope.onAction = function() {
// Here I want $scope.model.something to be set to "something"
// But it's undefined.
alert($scope.model.something);
};
}
Наконец, HTML:
<div ng-controller="MyController">
{{ model.something }}
<my-directive ng-model="model.something" on-action="onAction"/>
</div>
Еще одна вещь, я знаю, что могу просто позвонить scope.onAction('something')
, я ищу другое решение.
Адрес the fiddle.
Я не думаю, что вы связались с соответствующей скрипкой. – AlwaysALearner
@CodeHater - право, спасибо - теперь ссылка действительна. – kamituel