Передать параметр обещания вложенной директиве

0

К сожалению, код находится в 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>
Теги:
angularjs-directive

1 ответ

1

Имена функций области не должны быть преобразованы в пунктирную форму. Попробуйте использовать 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>
  • 0
    Нет, это не работает. Я подозреваю, что это как-то связано с этим pre: (scope, element, attribute, controller: ng.INgModelController): void => {scope.innerAutoComplete = scope.autoComplete; }, Я пытаюсь назначить внешнее обещание внутреннему, но я подозреваю, что это неправильный способ сделать это
  • 0
    Я не вижу кода, связанного с обещаниями в ваших фрагментах. scope.innerAutoComplete = scope.autoComplete; действительно назначает функцию другому члену.
Показать ещё 1 комментарий

Ещё вопросы

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