Директива AngularJs изменяет ngModel с задержкой и значением модели не совпадают - PullRequest
0 голосов
/ 04 марта 2019

Ng-change действует странно в директиве.Кажется, что задержка в цикле дайджеста приводит к неправильному (предыдущему) значению ngModel в контроллере сразу после изменения.

ngModel : '='

https://codepen.io/anon/pen/moEgdG

Что происходит и как исправить?

1 Ответ

0 голосов
/ 04 марта 2019

С директивой ng-model для компонента, я рекомендую использовать одностороннюю (<) для ввода и $ setViewValue на выходе:

app.directive('newTag', function(){
  return {
    template: `
       <input ng-model="test" ng-change="change(test)"> <br/>
       {{test}}
    `,
    restrict: 'E',
    require: "ngModel",  
    scope: {
        ngModel : '<',
    },
    link: function (scope, elem, attrs, ngModel) {
      scope.change = function(val) {
        ngModel.$setViewValue(val);
      };
    },
  };
})

Использование:

<new-tag ng-model="tagValue" ng-change("newTagUpdate(tagValue)")>
</new-tag>

Для получения дополнительной информации см.

...