К сожалению, код находится в Typcript, но, надеюсь, кто-то сможет указать мне в правильном направлении. Мы хотим внедрить директиву ввода тегов в директиве. Он принимает обещание фильтровать данные. Я хочу встроить элемент управления в другую директиву и передать обещание оттуда. То, что я сделал, работает, но параметр не передается. Это немного сложно объяснить, поэтому я покажу сокращенную версию кода. Привет, Крис.
Вот родительская директива
<sn-location-selector auto-complete="Model.Populate($query)" browselist="Model.Cache.CachedLocations" ng-model="Model.SelectedLocations2"></sn-location-selector>
Model.Populate имеет параметр $ query, который не передается на страницу из автозаполнения.
control.directive("snLocationSelector", ["Cache", "$rootScope", "$timeout",(Cache: Services.CacheService, Root: ng.IRootScopeService, $timeout: ng.ITimeoutService): any =>
{
return {
restrict: "EA",
templateUrl: "/control/snlocationselector.html",
require: "ngModel",
scope: {
disabled: "=?ngDisabled",
ngModel: "=",
autoComplete: '&',
browselist: "="
},
//replace: true,
link:
{
pre: (scope, element, attributes, controller: ng.INgModelController): void =>
{
scope.innerAutoComplete = scope.autoComplete;
},
post: (scope, element, attributes, controller: ng.INgModelController): void =>
{
}
}
}
}]);
Вот контроль над внутренней директивой
<tags-input class="dashboard-tags" ng-model="ngModel"
id="{{id}}"
name="{{controller.$name}}"
display-property="Name"
add-from-autocomplete-only="true"
on-tag-added="BrowseAddTag($tag)"
on-tag-removed="BrowseRemoveTag($tag)"
placeholder="Start typing a location or division...">
<auto-complete source="inner-auto-complete($query)" min-length="1" load-on-focus="true" highlight-matched-text="false"></auto-complete>
</tags-input>
Имена функций области не должны быть преобразованы в пунктирную форму. Попробуйте использовать innerAutoComplete
вместо inner-auto-complete
<tags-input class="dashboard-tags" ng-model="ngModel"
id="{{id}}"
name="{{controller.$name}}"
display-property="Name"
add-from-autocomplete-only="true"
on-tag-added="BrowseAddTag($tag)"
on-tag-removed="BrowseRemoveTag($tag)"
placeholder="Start typing a location or division...">
<auto-complete source="innerAutoComplete($query)" min-length="1" load-on-focus="true" highlight-matched-text="false"></auto-complete>
</tags-input>
scope.innerAutoComplete = scope.autoComplete;
действительно назначает функцию другому члену.