2015-02-12 23 views
2

我有一個複選框,應該檢查所有複選框。該複選框的工作原理應該是通過檢查所有的複選框,然而角度不認爲他們已被檢查?角度知道他們是否被檢查的唯一方法是如果我手動檢查每一個。 (括號和循環從laravel刀片PHP)在提交按鈕,我開始$ http.post到我的服務器的點擊如何檢查所有與角度的複選框

<label class="checkbox-inline"> 
    <input type="checkbox" ng-model="everyoneCheck"/> Everyone 
</label> 
@foreach($company->users as $tagIndex => $user) 
    <label class="checkbox-inline"> 
     <input type="checkbox" ng-checked="everyoneCheck" ng-model="newDiscussion.notify_partners[{{$tagIndex}}]" ng-true-value="{{$user->id}}" /> {{ $user->first_name }} {{ $user->last_name }} 
    </label>     
@endforeach 

,我只是在一個對象傳遞給函數後,這是對象。

var discussionData = { 
    'title': $scope.newDiscussion.title, 
    'discussion': $scope.newDiscussion.summary, 
    'company_id': company_id, 
    'notify_partners': $scope.newDiscussion.notify_partners 
}; 

由於某種原因,當我使用的所有檢查方式,沒有東西放進notify_partners,但是當我手動點擊每個複選框,他們將獲得進入並提交正確。

任何幫助?我覺得它是一種約束性問題,我只需要告訴角度,嘿它更新!

+0

使用NG-檢查,只是要更新視圖,而不是有道理模型 – Emmanuel 2015-02-12 02:41:48

+0

爲什麼它不那麼工作,更好的方法的任何想法? – 2015-02-12 02:43:13

+0

呀,創建一個函數和遍歷模型值(見我的回答如下) – Emmanuel 2015-02-12 02:46:13

回答

1

這裏的價值是一個辦法做到這一點:

<p><input type="checkbox" ng-model="globalCheck" ng-click="toggleCheckAll()" /> Check All</p> 

<ul> 
    <li ng-repeat="i in init"> 
     <input type="checkbox" ng-model="checkbox[$index]" /> Checkbox {{ $index + 1 }} {{ checkbox[$index] }} 
    </li> 
</ul> 

然後你控制器:

function myControl($scope) { 

    $scope.globalCheck = false; 
    $scope.checkbox = {}; 
    $scope.init = [0,1,2,3,4,5,6,7,8,9]; 

    $scope.toggleCheckAll = function() { 
     var k, val = !$scope.globalCheck; 
     console.log(val); 
     for(k in $scope.init) { 
      $scope.checkbox[k] = val; 
     } 
    } 

} 

請參閱JSfiddle工作示例

+0

在上述('$ scope.newDiscussion.notify_partners [K]') – Emmanuel 2015-02-12 02:48:03

+0

此代碼似乎不檢查所有這些,不知道就固定一個錯字爲什麼。 '$ scope.checkAll =函數(){ \t變種VAL = $ scope.everyoneCheck; (var i = 0; i <$ scope.newDiscussion.notify_partners.length; i ++){ \t $ scope.newDiscussion.notify_partners [i] = val; \t} \t}' – 2015-02-12 03:08:07

+0

for循環未運行,因爲'$ scope.newDiscussion.notify_partners'顯然沒有任何內容。該視圖中第一次填充了該屬性,這是您查看的頂部代碼。我最初開始在我的初始化函數的性質'$ scope.newDiscussion.notify_partners = [];' – 2015-02-12 03:20:29

0

ng-checked不更新ng-model綁定的值。它隻影響元素本身的checked屬性的存在。

最好的辦法是用ng-change執行某些功能,並相應地更新所有的模型。

<input type="checkbox" 
    ng-model="everyoneCheck" 
    ng-change="toggleCheckAll()"/> 

而在你的控制器,你可以有toggleCheckAll()循環在你的模型,並將它們設置基礎上的everyoneCheck