带有复选框不一致的$ scope变量

时间:2016-07-21 08:53:38

标签: angularjs

我在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来形象化我的问题。

1 个答案:

答案 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;