Angular JS - отображать и редактировать модель в текстовом поле И обновлять при изменении модели

Я только что пришел с этого поста:

Отображение и редактирование модели Angular JS в текстовой области

Это было очень полезно в том, чего я пытаюсь достичь, однако мне нужно сделать еще один шаг и обновить текстовое поле при изменении значений модели. Я работаю с последним примером @JustMaier из указанного выше сообщения. Я думаю, что мне нужно добавить $watch, но не знаю, как / где именно .. Благодарю за вашу помощь в этом, спасибо!


person Alex E    schedule 19.02.2015    source источник


Ответы (2)


Вы можете watch свое model значение в directive и активировать formatters при изменении:

scope.$watch(function() {
    return ngModel.$modelValue;
}, function(modelValue) {
    // trigger the formatters
    ngModel.$modelValue = '';
}, true);

ДЕМО

person MamaWalter    schedule 20.02.2015

Да ты прав. Его фактически документированная ngModel не отслеживает глубоких изменений и поэтому не просматривает zpdate при глубоких изменениях модели:

https://docs.angularjs.org/api/ng/type/ngModel.NgModelController

Итак, вам нужно добавить значение ngModel в область действия директивы, чтобы использовать в нем $watch:

scope:{'ngModel':'='}

а затем добавьте часы, которые обновят значение представления в функцию ссылки на директиву:

scope.$watch ('ngModel', function (newval) { 
  ngModel.$viewValue = toJson(newval);
  ngModel.$render();
}, true);

См. Демонстрацию: http://codepen.io/anon/pen/xbWamy

person Lukáš Doležal    schedule 20.02.2015