2016-07-08 150 views
0

我有下面的代码,网页上填入一定的选择项使用JSON对象:默认选择选项在角

<select ng-model="activity.selectedParent" ng-options="parent as parent.title for parent in parents track by parent._id"></select><br> 

我想知道,如果它在某种程度上可以指定一个默认选项,这样我可以给它一个标题和一个ID。例如,如果选择了默认值,那么和activity.selectedParent.id = 0。这是可能以某种方式使用Angular指令在<select>标签内指定的吗?否则,实现这一目标的最有效方法是什么?

+1

参见['ng-selected'](https://docs.angularjs.org/api/ng/directive/ngSelected) –

回答

1

如果我明白你想设置一个对象,即使默认选择好你的问题,那么你就可以做到这一点有两种方式:

  1. 使用您的select标签内ngInit指令,如下所示:

    ng-init="selectedParent = { '_id': 0, 'title': 'None' };"

  2. 初始化你的对象在你的控制器:

    $scope.selectedParent = { "_id": 0, "title": "None" };

编辑:

我想我得到了你想要的东西,现在:你想有一个默认的选项,而不是一个空白作为第一选择,对不对?如果是这样,你可以简单地将此元素添加到你的存在的阵列,使用unshift方法,所以它会被放在如下面第一个元素:

$scope.parents.unshift($scope.selectedParent); 

这里有一个片断工作:

var app = angular.module('app', []); 
 

 
app.controller('mainCtrl', function($scope) { 
 
    $scope.parents = [ 
 
    { 
 
     "_id":1, 
 
     "title":"first" 
 
    }, 
 
    { 
 
     "_id":2, 
 
     "title":"second" 
 
    }, 
 
    { 
 
     "_id":3, 
 
     "title":"third" 
 
    }, 
 
    { 
 
     "_id":4, 
 
     "title":"four" 
 
    } 
 
    ]; 
 

 
    $scope.selectedParent = { 
 
    "_id": 0, 
 
    "title": "None" 
 
    }; 
 

 
    $scope.parents.unshift($scope.selectedParent); 
 
});
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script> 
 
</head> 
 

 
<body ng-controller="mainCtrl"> 
 
    <select ng-model="selectedParent" ng-options="parent as parent.title for parent in parents track by parent._id"></select> 
 
    <hr> 
 
    Selected: <span ng-bind="selectedParent | json"></span> 
 
</body> 
 

 
</html>

+0

谢谢。如果我使用'ng-init',即使选择了其他的东西然后决定再次回到默认值,默认值仍然是一个选项吗? – MadPhysicist

+0

@MadPhysicist,你能看到我的编辑吗?我想我明白你现在想要..让我知道如果我失去了一些东西.. – developer033

+0

你添加了不移?这是做什么的?基本上,我总是显示从DB查询的父母列表。但是,我还希望在该清单上有一个选项,使得该条目没有父母(即成为自己的子女)。因此,我想知道如何将它添加到列表中。 – MadPhysicist

1

如果在ng-options中使用的数组不包含您希望设置为默认值的值,那么最简单的方法是将默认值添加到数组中。

首先设置selectedParent在控制器

$scope.selectedParent = { "_id": 0, "title": "None" }; 

然后将其添加到所述第一位置的阵列中

$scope.parents.splice(0,0,$scope.selectedParent); 

和选择的NG-模型finaly设置为ng-model="$scope.selectedParent"