Angularjs选择选项默认

Angularjs选择选项默认

问题描述:

我开始在项目中使用angularjs。在这里,我有一个追求。 我有以下HTMLAngularjs选择选项默认

<div> 
<label for="lastname">Bank Name :</label> 
<select ui-select2 ng-model="bank.id"> 
    <option></option> 
    <option ng-repeat="bank in banks" value="{{bank.id}}">{{bank.text}}</option> 
</select> 
</div> 

我所有的银行迭代的下拉列表。用户选择并按SAVE。我正确地得到了id并将其保存到数据库中。当用户回来时,我无法将下拉列表的值设置为他选择的值。我在控制器中执行此操作.js

$http.get('/AdServerLongTail/api/user'). 
success(function(data, status, headers, config) { 
    if(status == 200){ 
     $scope.id = (data["id"]);// user id     
     $scope.bank.id = (data["bankId"]);     
    } 
}). 
error(function(data, status, headers, config) { 
    alert("fail"); 
}); 

如何将它设置为bankID 11 letssay,这是XX银行?

你不应该以这种方式使用ng-repeat。请看看ngOptions http://docs.angularjs.org/api/ng.directive:select

+2

为什么? ui-select2不适用于ng选项。 – shapeshifter 2013-06-13 06:50:29

+0

我听到你的声音。但是,仅仅因为外部库不支持它,并不意味着它是正确的。 – Lander 2013-06-15 21:01:28

+4

@Lander,我同意这是不正确的,但不幸的是它是使用select2的唯一方法。你可以找到不同的东西或保持这种方式。我会建议编写一个更好的指令来访问s2,因为指令背后的想法是提供一个API,而不会暴露它在内部工作的方式。理想情况下,指令API应该与ng-select一起工作。使用ng-repeat不会破坏任何东西,我不认为它是一种破解。更令我困扰的是select2可能会非常缓慢。 – 2013-07-11 12:38:31

我发现它,很容易,我错过了那个。这是正确的代码。

<div> 
<label for="lastname">Bank Name :</label> 
<select ui-select2 ng-model="bank"> 
    <option></option> 
    <option ng-repeat="bank in banks" value="{{bank.id}}">{{bank.text}}</option> 
</select> 
</div> 

$http.get('/AdServerLongTail/api/user'). 
success(function(data, status, headers, config) { 
    if(status == 200){ 
     $scope.id = (data["id"]);// user id     
     $scope.bank = (data["bankId"]);     
    } 
}). 
error(function(data, status, headers, config) { 
    alert("fail"); 
}); 
+0

有没有办法做到这一点没有Angular UI?我也在努力。 – elliottregan 2013-05-25 16:34:52

+0

在选项中使用重复嵌套会导致问题,并且在使用常规角度绑定时无法正常工作。我花了一点才弄清楚为什么这种技术会导致其他的Angular db失败... – taudep 2013-06-04 15:39:48

+0

请标记其他答案是正确的。 – uriDium 2013-10-29 14:23:16

我是新角度和挣扎这一点。下面是一个简单的标记,这样做,它是NG-选择:

<option ng-repeat="bank in banks" value="{{bank.id}}" ng-selected="'11' == bank.id" >{{bank.text}}</option> 

但同样:不要做它作为建议由Lander这种方式。而是在<select>中使用ng-options。否则,你将结束在模型中的dropdown.assign bank.selected.id空的第一个选项。(在这里你的情况NG-模型bank.id.)

<select ng-model="bank.selected.id" ng-change="someAngularfunction()" ng-options=" (''+bank.id) as (bank.id +' - '+ bank.text) for bank in banks"> 
        <option value="">Select one</option> 
</select> 

还记得,期权的价值将不显示银行-id选项中,而是显示选项值=“0”或“1”或“3”,这是索引。但是,下拉菜单中的选定值将与bank.selected.id模型绑定。例如,如果选择下拉值作为bank.id = 11(XX Bank),则bank.selected.id将被设置为“11”。