2013-04-30 242 views
5

我開始在項目中使用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銀行?

回答

15

你不應該以這種方式使用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

2

我發現它,很容易,我錯過了那個。這是正確的代碼。

<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

8

我是新角度和掙扎這一點。下面是一個簡單的標記,這樣做,它是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」。