2015-03-16 4 views
1

У меня есть пользовательские директивы, как это:AngularJS - Наследование ngModel в пользовательской директивы

myText.html:

<div> 
<label>{{label}}</label> 
<input type="text" class="form-control" > 
</div> 

Javascript:

app.directive("myText", function() { 
    return { 
     restrict: 'E', 
     replace: true, 
     templateUrl: "shared/form/myText.html", 
     scope : { 
      label : "@", 
     } 
    }; 
}); 

Я просто хочу, чтобы обернуть ввод и обрабатывать метку как атрибут.

На мой взгляд, я использовать директиву следующим образом:

<my-text label="Name" ng-model="person.firstname"></my-text> 

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

Каков правильный способ достижения этого результата? Thanks

ответ

1

Поместите ng-model на вход и привяжите его к области изоляции.

<my-text label=Name model=person.firstname></my-text> 

<input type="text" class="form-control" ng-model=model> 

return { 
    restrict: 'E', 
    replace: true, 
    templateUrl: "shared/form/myText.html", 
    scope : { 
     label : "@", 
     model: "=", 
    } 
}; 
+0

Спасибо! Должен ли я использовать новое имя атрибута, например «model» или «ngModel», как наилучшую практику? Я пробовал {model: "= ngModel"}, и это сработало ... – Rob80

+0

@ Rob80 Я бы использовал имя, которое имеет смысл, а также попытаться не перегружать существующие имена директив –

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