2015-08-05 5 views
0

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

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

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

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

+0

код должен быть ** в вопросе **. –

ответ

1

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

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

Кроме того, имхо, используя:

scope: { 
myVal: '=ngModel' 
} 

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

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

Смежные вопросы