0

我正在使用AngularJs ui bootstrap模式。我有一个复选框的页面。当复选框用户检查并点击一个按钮,它把选中的复选框的模式:Angularjs UI Bootstrap模式 - 复选框选中状态不更新

var modalInstance = $modal.open({ 
    templateUrl: 'myModalContent.html', 
    controller: ModalInstanceCtrl, 
    resolve: { 
    checkedSearches: function() { 
     var checkedSearches = []; 
     angular.forEach($scope.searches, function(search) 
      { 
       if(search.checked) { 
        checkedSearches.push(search); 
       } 
      }); 

      return checkedSearches; 
     } 
    } 
}); 

在我的模式,我们又重新显示数据为复选框。用户可以选择/取消选择复选框并点击保存,它将保存所有选中的复选框。

var ModalInstanceCtrl = function ($scope, $modalInstance, checkedSearches) { 
    $scope.checkedSearches = checkedSearches; 

    var saveSearches = []; 
    angular.forEach($scope.checkSearches, function(search) 
       { 
        if(search.checked) { 
         saveSearches.push(search); 
        } 
       }); 

} 

问题是,它是保存所有的复选框。似乎选中的属性保留在复选框中,即使用户取消选中模式。我没有包含保存搜索的代码。我基本上推到searchSearches阵列,它似乎推动所有复选框,包括未选中的复选框。

下面是复选框我的看法/莫代尔:

<tr ng-repeat="search in checkedSearches"> 
    <td><input type="checkbox" ng-checked="search.checked" name="search" ng-model="search.checked" /></td><td>{{search.id}}</td><td>{{search.name}}</td> 
</tr> 

回答

0

好吧,貌似问题是,由于某种原因,该复选框选中的财产,没有被绑定模型。所以我增加了一个NG-点击指令来处理这个问题:

<tr ng-repeat="search in checkedSearches"> 
    <td> 
     <input type="checkbox" name="search" ng-checked="search.checked" ng-click="setCheckbox(search)" /> 
    </td> 
</tr> 

我说这在我的模态的控制:

$scope.setCheckbox = function(search) { 
    if(search.checked == true) { 
     search.checked = false; 
    } 
    else { 
     search.checked = true; 
    } 
}; 

现在,如果有人在那里,能告诉我为什么复选框没有被绑定到我的模型。

+0

使用ng-model(和ng-change如果您需要处理事件)可以解决此问题: http://stackoverflow.com/a/16601110 – user2173353