Angularjs选择选项选择默认值

Yag*_*urk 5 angularjs

我开始在项目中使用angularjs.在这里,我有一个任务.我有以下HTML

<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>
Run Code Online (Sandbox Code Playgroud)

我将所有银行迭代到下拉列表.用户选择并按SAVE.我正确地得到了id并将其保存到DB中.当用户回来时,我无法将下拉值设置为他选择的值.我在controller.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");
}); 
Run Code Online (Sandbox Code Playgroud)

如何将它设置为bankID 11 letssay,即XX Bank?

Lan*_*der 15

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

  • @Lander,我同意这不正确,但不幸的是,这是使用select2的唯一方法.你可以找到不同的东西或保持这种方式.我建议编写一个更好的指令来访问s2,因为指令背后的想法是提供一个API而不暴露它在内部工作的方式.在理想的世界中,指令API应该与ng-select一起使用.使用ng-repeat不会破坏任何东西,我不会认为它是一个黑客.更令我困扰的是,select2可能是极其缓慢的角度. (4认同)
  • 为什么?ui-select2不适用于ng-options. (2认同)

dil*_*aik 8

我是棱角分明的新人,为此做了一点努力.这是一个简单的标签,它是ng选择的:

<option ng-repeat="bank in banks" value="{{bank.id}}" ng-selected="'11' == bank.id" >{{bank.text}}</option>
Run Code Online (Sandbox Code Playgroud)

但是再说一遍:不要像兰德所建议的那样这样做.而是用ng-options在<select>.否则,你将在dropdown.assign bank.selected.idin model中得到空的第一个选项.(在你的情况下,ng-model是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>
Run Code Online (Sandbox Code Playgroud)

还要记住,选项值不会在选项中显示bank-id,而是显示选项value ="0"或"1"或"3"这是索引.但是下拉列表中的选定值将与bank.selected.id模型绑定.例如,如果选择下拉值,例如bank.id = 11(XX Bank),则bank.selected.id将设置为"11".