2017-05-09 47 views
0

angularjs假我有ng-repeat我想檢查複選框是否被選中或不使用它們的索引值內複選框如何檢查複選框是否屬實或者在使用索引值

HTML

<div ng-repeat="Name in Names"> 
    <input type="checkbox" 
      ng-change="checkchange(Name .MaterialStream, $index)" 
      ng-model="Name.MaterialStream" /> 
</div> 

控制器

$scope.checkchange=function(index){ 
     $scope.Names[index].active='true'; 
} 

現在我檢查複選框時得到正確的值。我必須得到積極的價值是true,但我有檢查意味着積極應改爲false在我的情況下它是true在這裏我附上我的代碼幫助如何做到這一點。

+0

究竟是什麼你想在這裏實現什麼?你是否有理由通過'$ index'而不是你想改變的實際模型? –

+0

當我檢查複選框,我想顯示真正的其他錯誤使用索引 – jose

回答

2

您可以直接綁定Name.active而不使用ng-repeat

<div ng-repeat="Name in Names">   
    <input type="checkbox" ng-model="Name.active" /> 
</div> 

既然你結合Name.MaterialStream到複選框,可以基於它在ng-changeName.active設置。

$scope.checkchange=function(index){ 
    $scope.Names[index].active = $scope.Names[index].MaterialStream; 
} 
+0

有沒有辦法顯示任何新的活動範圍值? – jose

+0

@jose在你的代碼中,通過'$ scope.Names [index] .active ='true';'你試圖更新'active'屬性。不是嗎? – Pengyy

+0

是的正確,但我沒有使用ng-model – jose

1

要獲得複選框的值,您只需返回模型本身。

HTML

<div ng-repeat="Name in Names"> 
    <input type="checkbox" ng-change="checkchange($index)" 
      ng-model="Name.MaterialStream" /> 
</div> 

JS

$scope.checkchange=function(index){ 
    return $scope.Names[index].MaterialStream; 
} 

請注意,我刪除了你傳遞給checkchange功能,因爲它並沒有使用過的第一個參數。實際上,在您檢查index變量之前,它不會保留真實的$index值。

+0

沒有@philip我需要那個活動範圍不使用型號名稱:( – jose

+0

'活躍'屬性不保留你的模型的價值,但。 –

+0

我在運行時創建活動範圍 – jose

1

ng-model是綽綽有餘存儲true false的複選框,您不需要$index都多,但如果你必須$index做到這一點,那麼你也可以利用ng-model

看到這個Fiddle例如你的代碼。

另外:在上面的代碼中,checkchange()方法的定義不接受first argument,這就是一個問題。如果你不打算消耗它,你不應該通過它。

0

這是您的解決方案。在實例

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
$scope.Names = [{value : true}, {value : true},{value : false},{value : false},{value : true}] 
 
     $scope.toggleSelection = function(x,index,event) { 
 
      // how to check if checkbox is selected or not 
 
      //alert(index + ' is ' + event.target.checked); 
 
      $scope.Names[index].Active = $scope.Names[index].value; 
 
     }; 
 
});
<body ng-app="myApp" ng-controller="myCtrl"> 
 
    <div ng-repeat="Name in Names"> 
 
    {{$index}} 
 
    <input type="checkbox" id="" name="check_box" 
 
      value="{{x}}" 
 
      ng-change="toggleSelection(x.value,$index,$event)" 
 
      ng-model="Name.value" > {{Name.Active}} 
 
    </div> 
 
    
 
    
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

相關問題