Не удается добавить атрибут к элементу, используя $ postLink - AngularJS - PullRequest
0 голосов
/ 08 января 2019

У меня есть простой компонент, и я пытаюсь динамически добавить в мой элемент ввода атрибут multiple, но иногда он не работает. Зачем? И есть ли способ сделать то, что я хочу?

app.component('myComponent', {
    templateUrl: 'tmpl.html',
    bindings: {
        str: '@'
    },
    controller: function () {
        var ctrl = this;
        ctrl.$postLink = function () {
            $('#myInputId').attr('multiple', '');
        }
    }
}

1 Ответ

0 голосов
/ 09 января 2019

Это решение:

app.component('myComponent', {
    templateUrl: 'tmpl.html',
    bindings: {
        str: '@'
    },
    controller: function ($element) {
        var ctrl = this;
        ctrl.$postLink = function () {
            $element.find('input').attr('multiple', 'multiple');
        }
    }
}

Хитрость была в том, чтобы связать вещи. Код из вопроса не работает, потому что input еще не существует в DOM в то время, когда срабатывает ловушка $postLink. Итак, нам нужно внедрить сервис $element в контроллер и использовать его для манипулирования DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...