У меня есть флажок, который я хотел бы установить в неопределенное состояние на основе состояний других флажков. Когда я нахожусь на странице, на которой установлены все флажки, она обновляется, как и ожидалось (т.е. флажок найден). Но когда я перехожу к этому с другой страницы, мой метод не находит флажок (т.е. возвращает null).

Когда я отлаживаю в Chrome devtools, я замечаю

let checkBoxWithIndeterminateState;
let checkbox = false;

fireWhenCheckBoxChanged() {
     // returns null when navigating from another page but not when on its own page
     checkBoxWithIndeterminateState = document.getElementById('checkBoxWithIndeterminateState')
     checkBoxWithIndeterminateState.indeterminate = true
}

Шаблон:

<input type="checkbox" id="checkBoxWithIndeterminateState" data-ng-model="checkbox">

Как мне дождаться загрузки нового шаблона, прежде чем мой метод попытается найти флажок? Я прочитал некоторые предложения по использованию this._$scope.$on('$viewContentLoaded'..., но это не работает.

Благодарность!

0
jjkl 22 Мар 2020 в 01:12

1 ответ

Как насчет добавления директивы ng-init к вашему целевому флажку и выполнения вашей логики в нем, таким образом, вы уверены, что элемент есть, вот предложение:

<input type="checkbox" ng-init="initTragetCheckbox()">

В вашем контроллере

$scope.initTragetCheckbox = function () {
    // your code to execute for other checkboxes
    var checkbox1 = document.getElementById("checkbox1");
    var checkbox2 = document.getElementById("checkbox2");
    ....
}
1
Mostav 23 Мар 2020 в 02:41