【问题标题】:ng-grid inside modal window just works the fist time the modal is open模态窗口内的 ng-grid 仅在模态第一次打开时工作
【发布时间】:2014-01-19 06:48:10
【问题描述】:

我在模态窗口中有一个网格(必须在那里,因为我的客户真的想要那样),当模态第一次打开时,可以选择网格中的行,显示所选项目在父窗口的 div 中,一切似乎都很好,但是当模式窗口关闭并再次打开时,ng-grid 中的行被冻结,我无法取消选择旧行或选择新行。这个想法是他可以通过选择或取消选择 ng-grid 中的行来添加或删除细节,但它只是添加,并且只是在第一次打开模式窗口时。

$scope.catalogOptions = {
        data: 'catalog',
        selectedItems: $scope.selectedDetails,
        columnDefs: [
            { field: "Num", displayName: 'NUM', width:"10%"},
            { field: "Type", displayName: 'TYPE', width:"90%"}],
        multiSelect: true,
        afterSelectionChange: function(item, event){
            if($scope.selectedDetails.length!=0){
                $scope.sdetails=$scope.selectedDetails;
            }
        }
    };
    $scope.sdetails=null;

这是我在控制器中的 ng-grid 定义,我还必须说带有 ng-grid 的模态窗口是从另一个模态窗口调用的(我的客户要求),基本上结构是“主页>添加记录模态>添加详细模态”,我使用这个插件http://jschr.github.io/bootstrap-modal/bs3.html 并从带有数据切换和href的按钮调用模态

我想做什么甚至可能吗? =(

【问题讨论】:

  • 没有实际例子很难回答。请提供 jsfiddle 或 plnkr 示例。
  • 对不起,我对 web 开发很陌生,我的英语不是很好,没有找到在 plnkr 中完全显示我的问题所需的插件,但我决定从 jschr 中删除引导插件并选择一个为 angular 设计的,现在一切都很好,tnks 适合你的时间,似乎是解除模型绑定的模态窗口

标签: javascript angularjs twitter-bootstrap modal-dialog ng-grid


【解决方案1】:

您是否检查过 afterSelectionChange 方法被调用了多少次?如果您第二次选择一行,则会调用此回调两次,一次用于先前选择的行,一次用于新选择的行。

    afterSelectionChange: function(item, event){
        if(item.selected) { //<-- only execute the below for the selected row
            if($scope.selectedDetails.length!=0){
                $scope.sdetails=$scope.selectedDetails;
            }
        }
    }

【讨论】:

  • 我需要它在这两种情况下都能正常工作,我的代码就像第一次打开模式窗口时的预期一样工作。经过更多检查,我在模态窗口中的日期选择器在第一次打开模态窗口时也在工作,所以我改变了我的方法,因为它看起来有些东西正在解除模型的绑定。使用 boostrap.ui 模态后,我的 datepickers 每次打开模态时都可以正常工作,而不是为 ng-grid 打开另一个模态,我只是将它放在第一个模态内的某个位置,作为客户选择的清单详情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
  • 2016-09-17
相关资源
最近更新 更多