angular: вложенная директива ngmodel

Asume у нас есть директива с вложенной директивой внутри. Обе директивы хотят изменить данные перед их отображением. Для этого я использовал ngModelController, но открыт для других предложений.

Моя проблема: я не могу заставить его работать без использования scope. $ Apply (), но, с другой стороны, scope. $ Apply () выдает ошибку, когда я использую его, что указывает на то, что это не нужно.

Вот пример проблемы: http://embed.plnkr.co/RROBxuITLpYnGkHSQAe3/preview

Что я делаю неправильно?


person Domenic    schedule 05.08.2015    source источник
comment
Код должен быть в вопросе.   -  person JB Nizet    schedule 05.08.2015


Ответы (1)


Я думаю, вам стоит узнать больше о ngModelController, особенно о $formatters $parsers и $render. Это отличный учебник: http://www.chroder.com/2014/02/01/using-ngmodelcontroller-with-custom-directives/. Они также объясняются в этом вопросе: ngModel Formatters and Parsers

В вашем случае вы можете заменить $watch функцией форматирования. Средства форматирования вызываются при изменении значения из контроллера. Вы можете манипулировать данными в функции форматирования, и тогда они будут установлены как $viewValue. Хорошая практика - использовать как можно меньше часов.

Также imho используя:

scope: {
 myVal: '=ngModel'
}

Выглядит плохо. Это может сбить с толку других программистов, которые будут работать с вашим кодом. ngModel следует использовать, поместив его в свойство require.

Я бы сделал это таким образом: http://plnkr.co/edit/Ve1Ipm53BiYorjtxron5?p=preview

person akn    schedule 05.08.2015