2013-01-23 147 views
4

我有資源在我的控制器和填充NG-重複複選框 接下來我知道的事情在控制器,它要檢查角度NG重複選中複選框

代碼將看起來像..

$scope.data = resource.query(); 

var arr_to_be_checked = [1,3,5]; 
其他控制器

我用這個..

$scope.data = [ { Type: 1, checked: true, Title: 'Item A'}, 
       { Type: 2, checked: false, Title: 'Item B'}]; 

其工作正常,但我需要的資源和NG-重複申請,是因爲我需要更多的Flexi ble

我發現任何營養,但沒有點。請問你能幫助我嗎?

我的問題是:我可以用「checked:true」覆蓋資源中的對象,或將任何複選框設置爲選中狀態。

非常感謝你的幫助或任何想法
有一個愉快的一天


回答

12
<ul> 
    <li ng-repeat="item in data"> 
    <input type="checkbox" ng-checked="item.checked"> {{item.Title}} 
    </li> 
</ul> 
<button ng-click="checkItems()">Do</button> 

$scope.checkItems = function() { 
    var i; 
    for (i = 0; i < arr_to_be_checked.length; i++) { 
    data[arr_to_be_checked[i]].checked = true; 
    } 
}; 

PS:請在您的命名約定相一致真的,JavaScript的使用camelCase命名約定,沒有下劃線。唯一的構造函數命名PascalCase

相關API文檔:
ng-click
ng-checked

+0

TY尋求幫助,但我的問題是,所以我不能補checked屬性自動控制器中。我知道我可以如何使用按鈕,但我需要其他交互。我需要在載入頁面上從我的數組中檢查設置。用戶點擊複選框和頁面刷新,但我知道之後,這是檢查,但刷新後我都沒有選中。我需要在加載時更改屬性。理解我還是我的英語很愚蠢? – daremachine

+0

如果你希望這是自動的,最好的辦法是觀察你的'數據'屬性,當它改變時,將項目設置爲檢查狀態。 –

+0

觀看是個好主意,但它不知道可以檢查哪個複選框。它的工作正常,但我不知道如何說「是的,這個複選框可能會被檢查」。你可以在jsfiddle上創建簡單的例子嗎? thx fastereload – daremachine

1

SOLUTION

我看的解決方案從fastreload和修改這樣的..

var arr_checked_items = [1,2,5] // this checkboxes will be set as checked 


<ul> 
    <li ng-repeat="item in data"> 
    <input type="checkbox" ng-checked="checkItem(item.id)"> {{item.Title}} 
    </li> 
</ul> 

$scope.checkItem = function (id) { 
    var checked = false; 
    for(var i=0; i<= arr_to_be_checked.length; i++) { 
     if(id == arr_to_be_checked[i]) { 
     checked = true; 
     } 
    } 
    return checked; 
}; 

ITS WORKING PERFECT !!!負載無需任何點擊按鈕

+1

如何標記他的答案是正確的,然後 – ADAM

+0

-點好..所以我在這裏等待更好的解決方案,因爲我之前被問過。 Iam非常傷心,如果IAM尋求幫助,任何人都來這裏,無需給我-1 ...我從來沒有說最好的解決方案,但工作,我需要工作,而不是等待點... – daremachine

+0

也許是因爲你問了一個問題,從@fastreload獲得幫助,然後用他的代碼重新解答你的答案,而不給他任何upvotes。這不是它在這裏如何運作。 – ADAM

7

另一種解決方案:

<div ng-controller="MainCtrl"> 
    <label ng-repeat="(color,enabled) in colors"> 
     <input type="checkbox" ng-model="colors[color]" /> {{color}} 
    </label> 
    <p>colors: {{colors}}</p> 

<script> 
    var app = angular.module('plunker', []); 

    app.controller('MainCtrl', function($scope){ 
     $scope.colors = {Blue: true, Orange: true}; 
    }); 

http://plnkr.co/edit/U4VD61?p=preview

+0

非常感謝您的回覆。但我的觀點是我有正常的陣列不作爲對象。與對象工作正常,但我需要設置正常數組的檢查框。如果你有任何的營養,我會聽。 Iam很高興迴應。 ty – daremachine

+0

簡單:只需'$ scope。$ watch(colors)'對象並將另一個鍵更新爲數組:)保持簡單 – kolypto

+0

此解決方案不保留訂單 – zochhuana