Я хочу создать директиву, чтобы я мог добавить к ней 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
Вы очень близки. Внутри вашего директивного контроллера вам нужно только изменить определение изолированной области:
scope: {
year:'=year',
}
Поскольку имя вашего атрибута совпадает с именем свойства в изолированной области видимости, вышесказанное равно:
scope: {
year:'=',
}
Рабочий пример: http://plnkr.co/edit/HrL1NdZirXBeG3pm8FiP?p=preview
Подробнее о создании областей в директивах вы можете найти здесь: Угловые документы - Директивы
То, что вы сделали здесь в своей изолированной области, говорит о том, что атрибут ngModel вашей директивы должен быть назван годом в вашей изолированной области, поэтому вы должны использовать его таким образом, когда используете свою директиву:
<date ng-model='orderDate.year'> </date>
или измените определение области на:
scope: {
year:'=',
},