Я борюсь с некоторыми переменными $scope
в моем приложении angularjs.
Я хочу визуализировать "Модули", которые имеют серверные "Каналы", и эти каналы могут быть скрытыми/видимыми. Я хочу скрыть каналы во всплывающем канале, дважды щелкнув по этому каналу.
Угловой-контрольный фрагмент:
$scope.dblclick = function(chid) {
$scope.chclicked = chid;
$scope.hidden = $scope.moduledata.channels[chid].hidden !== 0 ? true : false;
$scope.popupvisible = true;
};
$scope.popupok = function() {
$scope.moduledata.channels[$scope.chclicked].hidden = $scope.hidden === true ? 1 : 0;
$scope.popupvisible = false;
};
$scope.popupcancel = function() {
$scope.popupvisible = false;
};
$scope.closePopup = function() {
$scope.popupvisible = false;
};
Прежде чем показывать всплывающее окно, я устанавливаю (я пытаюсь) текущее 'hidden'
значение и channel-id
чтобы иметь доступ к ним при закрытии всплывающего окна.
Флажок в popup имеет ng-model="hidden"
.
Теперь проблема заключается в том, что скрытые значения в moduledata
не обновляются и не изменяются, а $scope.hidden
всегда сохраняет последнее значение флажка во всплывающем окне - для всех каналов.
Однако $scope.chclicked
работает нормально.
Я сделал Plunk для визуализации моей проблемы.
Посмотрите на следующий Plunker, основанный на вашем.
ng-include
создала новую область действия, поэтому причина, по которой вы не можете просто использовать hidden
в ng-model
во всплывающем шаблоне.
Тебе нужно:
ng-model="moduledata.channels[chclicked].hidden"
Редактировать 1
popup
объект был создан для хранения всей информации, связанной с всплывающим окном, включая hidden
переменную.
$scope.popup = {
visible: false,
url: 'channeleditpopup.html',
hidden: false
};
Затем во всплывающем шаблоне:
ng-model="popup.hidden"
В функции popupok
:
$scope.moduledata.channels[$scope.chclicked].hidden = $scope.popup.hidden ? 1 : 0;
В функции dblclick
:
$scope.popup.hidden = false;