2016-07-08 65 views
3

請檢查plunker。我無法綁定來自服務器的數據,例如(["Monday","Tuesday"])無法將數據綁定到angularjs中的dropdown-multiselect中

我知道數據結合時,它就像

$scope.selectedUser = [{ id: 2, name: 'Monday' }, 
         {id: 3,name:'Tuesday'}];. 

我要讓["Monday","Tuesday"][{ id: 2, name: 'Monday' },{id: 3,name:'Tuesday'}]在JavaScript,以便它在下拉菜單中進行綁定。

請幫我解決這個問題。

demo plunker

+1

你想做什麼? –

回答

1
//This is the ng filter to create id as you get the data from server 
app.filter('createId',function(){ 
    return function(arr){ 
     var result = []; 
     for(var i = 0;i < arr.length;i++){ 
      var id = arr[i].substring(0,3); 
      var obj = {'id':id,'name':arr[i]}; 
      result.push(obj); 
     } 
     return result; 
    } 
}); 

//In js controller you can costomize your array of user by using ng-filter like this 
$scope.users = $filter('createId')($scope.users); 
//This is because index will be changed every time so this can't be used as ID 
$scope.selectedUser = $filter('createId')($scope.selectedUser); 
+0

非常感謝你..這是工作 –

1

你可以做到這一點

$scope.selectedUsers=[]; 
//serverData is data from server 
for(var i =0 ; i < serverData.length ; i++){ 
    $scope.selectedUsers.push({id:i , name: serverData[i]}) 
} 

而在你的角度

$scope.doSelectedUser = function() { 
    $scope.selectedUser = $scope.selectedUsers; 
} 
1

$scope.selectedUser$scope.users有實際對象的引用。例如,這是我在你的plunker更改綁定它與用戶相匹配的用戶名列表:

var defaultSelectedUsers = ["Sunday","Tuesday"]; 

$scope.users = [ 
    { id: 1, name: 'Sunday' }, 
    { id: 2, name: 'Monday' }, 
    { id: 3, name: 'Tuesday' } ]; 

$scope.selectedUser = $scope.users.filter(function(user){ 
    return defaultSelectedUsers.indexOf(user.name) != -1; 
}); 

在線演示 - http://plnkr.co/edit/3TOkZEaZVSxtpNbFaNkg?p=preview


您提到要從服務器的響應中執行。目前還不清楚你想如何決定選擇哪一個,假設你依靠你的例子依靠一個默認的選定用戶。

這是你如何處理服務器的響應並修改新的選擇的用戶:

var defaultSelectedUsers = ["Sunday","Tuesday"]; 

$http.get('/api/v1/users') 
    .success(function(users)){ 
     $scope.users = users; 

     $scope.selectedUser = users.filter(function(user){ 
      return defaultSelectedUsers.indexOf(user.name) != -1; 
     }); 
    }); 

您可以更改過濾條件是什麼原因使你感覺

+0

雖然我從以前的評論得到的答案,這也是非常有幫助和簡單..謝謝你 –

1

使用下面的代碼實現您的JSON

var temp = ["Monday", "Tuesday"] 
var result = "["; 
for (var i = 0; i < temp.length; i++) { 
if(i!=temp.length-1) 
{ 
    result += "{id:'" + i + "',name:'" + temp[i] + "'},"; 
} 
else 
{ 
    result += "{id:'" + i + "',name:'" + temp[i] + "'}"; 
} 
    alert(result); 
} 
console.log(result+"]")