2016-11-27 69 views
0

我會盡量縮短並重點考慮。如何使用複選框選擇修改數組(只需要修改某些內容即可)

當我選擇一個角色時,它將它添加到一個包含角色名稱以及是否被選中(true或false)的數組中。其實數組保存方式如下:

[ 
    { 
    "name": "CDB_DBA", 
    "selected": true 
    }, 
    { 
    "name": "CONNECT", 
    "selected": true 
    } 
] 

,我需要它來保存這種方式(與我從複選框列表中選擇角色):

["CDB_DBA", "CONNECT"] 

該數組包含所選的角色,我相信這很容易改變,但我是新手,需要一些幫助。先謝謝你。這裏的JSBin鏈接到項目:

JSBin Project

回答

1

我已經更新通過創建一個新的數組,推動價值成陣列,同時在勾選複選框您的鏈接

您可以檢查此預期?如果不是,請簡單解釋一下。

請查看以下鏈接

http://jsbin.com/huwepirolo/edit?html,js,output

$scope.updateArray= function(value){ 
     alert(value); 
     $scope.array.push(value); 
    } 
+0

我發現一個小錯誤,當我取消選擇一個角色它仍然把它添加到陣列每次我點擊複選框,任何方法來解決它?提前致謝。 – Aceman

+0

Heyy yaa我已修復它。請檢查下面的鏈接我已經更新了代碼http://jsbin.com/ropeqeqicu/edit?html,js,output – Ajaykumar

+0

Ajay,我收到了最後一個請求,當我點擊編輯按鈕時,它將所選用戶角色,有沒有辦法將它們保存在$ scope.array = []; ....它檢查用戶擁有的複選框角色,但不更新$ scope.array中的角色,我希望你能理解我,謝謝你非常喜歡你是一個救世主,我已經更新了截圖,以更好的方式說明你... [link](http://imgur.com/a/ErwFS)@ajaykumar – Aceman

1

如果你想一個數組在上格式轉換到下一個,你可以使用Array.filter過濾掉剛剛selected元素,然後Array.map挑出來的name屬性:

var input = [ 
 
    { 
 
    "name": "foo", 
 
    "selected": false 
 
    }, 
 
    { 
 
    "name": "bar", 
 
    "selected": true 
 
    }, 
 
    { 
 
    "name": "memes", 
 
    "selected": false 
 
    }, 
 
    { 
 
    "name": "quux", 
 
    "selected": true 
 
    }, 
 
    { 
 
    "name": "xyzzy", 
 
    "selected": false 
 
    }, 
 
    { 
 
    "name": "corn", 
 
    "selected": true 
 
    } 
 
]; 
 

 
var output = input 
 
       .filter(obj => obj.selected) // filter out non-selected elements 
 
       .map(obj => obj.name);  // just get the name 
 
console.log(output);

注意,這留下input未修改; output是一個新的陣列。