Как добавить ng-модель в шаблон директивы в Angularjs

0

Я хочу создать директиву, чтобы я мог добавить к ней ng-модель. моя директива:

app.directive('date', function() {
return {
      restrict: 'E',
            scope: {
                year:'=ngModel',
            },
            template: '' +
            '<div> ' +
            '   <div > ' +
            '       <div> ' +
            '               <input class="control" type="text" ng-model="year"/> ' +
            '   </div> ' +
            '</div>',
    require: 'ngModel',
    replace: true
   };
 });

когда в html-странице я добавляю эту директиву a this

 <date year='orderDate.year'> </date>

эта директива ng-model name - год, в то время как я хочу, чтобы это было orderDate.year

Теги:

2 ответа

0

Вы очень близки. Внутри вашего директивного контроллера вам нужно только изменить определение изолированной области:

scope: {
         year:'=year',
       }

Поскольку имя вашего атрибута совпадает с именем свойства в изолированной области видимости, вышесказанное равно:

scope: {
         year:'=',
       }

Рабочий пример: http://plnkr.co/edit/HrL1NdZirXBeG3pm8FiP?p=preview

Подробнее о создании областей в директивах вы можете найти здесь: Угловые документы - Директивы

  • 0
    мою проблему не решить :(
  • 0
    Вам нужно убедиться, что $ scope.orderDate.year существует в вашей области видимости. Если вы не установили это в своем контроллере, это не будет известно. Я добавлю рабочий пример к моему ответу.
0

То, что вы сделали здесь в своей изолированной области, говорит о том, что атрибут ngModel вашей директивы должен быть назван годом в вашей изолированной области, поэтому вы должны использовать его таким образом, когда используете свою директиву:

 <date ng-model='orderDate.year'> </date>

или измените определение области на:

scope: {
    year:'=',
},
  • 0
    не работает для меня
  • 0
    удалите require ngModel, если вы используете область действия: {year: '='}
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню