У меня есть директива, которая создает входной AutocompleteКак передать ссылку объекта на внутреннюю директиву в Angular JS?
angular.module('autocomplete', [])
.directive('autocomplete', function (...) {
return {
restrict: 'E',
scope: {
"id": "@id",
"selectedObject": "=selectedobject",
"baseSearchUrl" : "@basesearchurl"
},
templateUrl: "..."
link: function(...){...}
}
}
пример использования:
<autocomplete
id="favoriteMovie"
selectedobject='favMovie'
searchUrl='/rest/movies?search=' />
Он прекрасно работает. Теперь я хочу, чтобы создать новый, более конкретную, директиву, создать автозаполнения для просмотра фильмов, так что я могу использовать его как это:
<autocompleteMovie
id="favoriteMovie"
selectedmovie='favMovie'/>
Новая директива выглядит следующим образом:
angular.module('autocompletemovie', [])
.directive(
'autocompletemovie',
function() {
return {
restrict : 'E',
scope : {
"id" : "@",
"selectedMovie" : "=selectedmovie"
},
templateUrl : '...'
};
});
Мой шаблон Html для нового компонента:
<autocomplete
id="{{id}}"
selectedobject='{{selectedMovie}}'
searchUrl='/rest/movies?search=' />
Но это не работает. Атрибут id
передается правильно «внутреннему» autocomplete
, однако ссылка на объект, заданная атрибутом selectedmovie
, не работает.
Я сделал вторую попытку, передавая имя ссылки на объект вместо самого объекта:
Директива:
angular.module('autocompletemovie', [])
.directive(
'autocompletemovie',
function() {
return {
restrict : 'E',
scope : {
"id" : "@",
"selectedMovie" : "@selectedmovie"
},
templateUrl : '...'
};
});
Но это не работает, как хорошо.
Я надеюсь, что вы поймете, чего я пытаюсь достичь.
[Редактировать] Я также попытался:
<autocomplete
id="{{id}}"
selectedobject='selectedMovie'
searchUrl='/rest/movies?search=' />
Но это не работает. Объект с фиксированным именем selectedMovie
создается на объем, даже если я позвоню директиву с другим атрибутом selectedmovie
:
<autocompleteMovie
id="favoriteMovie"
selectedmovie='favMovie'/>
В приведенном выше примере, я хотел бы иметь объект с именем favoriteMovie
и не selectedMovie
.
[/ Edit]
Я тоже пробовал это, но он не работает, как я ожидал. Я отредактировал вопрос, чтобы добавить дополнительное объяснение. –