Javascript 无法将数据绑定到angularjs中的下拉式multiselect
请检查一下这个箱子。我无法像这样绑定来自服务器的数据Javascript 无法将数据绑定到angularjs中的下拉式multiselect,javascript,angularjs,Javascript,Angularjs,请检查一下这个箱子。我无法像这样绑定来自服务器的数据([“周一”、“周二”) 我知道数据绑定的时候就像 $scope.selectedUser = [{ id: 2, name: 'Monday' }, {id: 3,name:'Tuesday'}];. 我想用javascript将[“星期一”、“星期二”]转换成[{id:2,name:'Monday'},{id:3,name:'tuday'}],这样它就可以在下拉列表中绑定 请帮我解决这个问题
([“周一”、“周二”)
我知道数据绑定的时候就像
$scope.selectedUser = [{ id: 2, name: 'Monday' },
{id: 3,name:'Tuesday'}];.
我想用javascript将[“星期一”、“星期二”]
转换成[{id:2,name:'Monday'},{id:3,name:'tuday'}]
,这样它就可以在下拉列表中绑定
请帮我解决这个问题
你可以这样做
$scope.selectedUsers=[];
//serverData is data from server
for(var i =0 ; i < serverData.length ; i++){
$scope.selectedUsers.push({id:i , name: serverData[i]})
}
$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;
});
在线演示-
您提到要从服务器的响应执行此操作。假设根据您的示例,您依赖默认的按名称选择的用户,则不清楚您希望如何决定选择哪一个 这是处理服务器响应和修改新选定用户的方式:
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;
});
});
您可以将筛选条件更改为对您有意义的条件使用以下代码实现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+"]")
var temp=[“星期一”、“星期二”]
var result=“[”;
对于(变量i=0;i
//这是从服务器获取数据时创建id的ng筛选器
app.filter('createId',function(){
返回函数(arr){
var结果=[];
对于(变量i=0;i
你想做什么?虽然我从前面的评论中得到了答案,但这也是非常有用和简单的。。非常感谢。
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+"]")
//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);