我在angularjs-app中遇到了一些$scope
变量。
我想想象'模块'有几个频道'频道'这些频道可以隐藏/可见。我想通过双击该频道来隐藏频道弹出频道。
angular-Controller片段:
$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
以便在关闭弹出窗口时访问它们。
弹出窗口中的复选框设置了ng-model="hidden"
。
现在的问题是moduledata
中的隐藏值没有得到更新/更改,$scope.hidden
始终保持弹出窗口中最后一个值 - 对于所有频道。
$scope.chclicked
可以正常工作。
我制作了一个Plunk来形象化我的问题。
答案 0 :(得分:1)
请根据您的the following Plunker查看。{/ p>
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;