模态窗口内的ng-grid只在模态打开时才起作用

时间:2014-01-19 06:48:10

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

我在模态窗口中有一个网格(必须在那里,因为我的客户真的想要那样),当模态第一次打开时,可以选择网格中的行,显示所选项目在父窗口的div中,一切似乎都很好,但是当模态窗口关闭并再次打开时,ng网格中的行被冻结,我无法取消选择旧行或选择新行。他的想法是,他可以通过选择或取消选择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从按钮调用模态

是我试图做甚至可行的? =(

1 个答案:

答案 0 :(得分:0)

您是否检查过调用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;
            }
        }
    }