2016-02-09 52 views
7

我想設置選項的默認值 我正在使用select和ng-repeat。我確實在js文件中獲取數據,並且確實在那裏調用模型來設置值。ng-selected不能用ng-repeat設置默認值

請看看下面的代碼:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Example - example-ngrepeat-select-production</title> 


    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.2/angular.min.js"></script> 
    <script src="app.js"></script> 



</head> 
<body ng-app="ngrepeatSelect"> 
    <div ng-controller="ExampleController"> 
    <form name="myForm"> 
    <label for="repeatSelect"> Repeat select: </label> 
    <select ng-model="datamodel"> 
     <option ng-repeat="dataitem in data" 
       ng-selected ="{{dataitem == datamodel}}">{{dataitem}}</option> 
    </select> 
    </form> 
    <hr> 
    <tt>repeatSelect = {{datamodel}}</tt><br/> 
</div> 
</body> 
</html> 

app.js文件

(function(angular) { 
    'use strict'; 
angular.module('ngrepeatSelect', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
    $scope.data = [1,2,3,4,5]; 

    $scope.datamodel = 2; 
}]); 
})(window.angular); 

這裏是我的plunker

回答

9

angular docs

注意沒有ngOptions的select指令的值總是一個字符串。當模型需要綁定到非字符串值 時,您必須使用指令(請參閱下面的示例 )明確轉換它,或者使用ngOptions指定選項集。這是 ,因爲選項元素只能綁定到 存在的字符串值。

因此將$scope.datamodel = 2;更改爲$scope.datamodel = '2';的作品。見更新的plunker

但是,最好使用ngOptions來代替。再次,從文檔:

在許多情況下,ngRepeat可以在<option>元素,而不是 ngOptions用於實現類似的結果。然而,ngOptions提供了一些益處,例如在作爲理解表達式的一部分通過選擇指定<select>的模型 方面更具靈活性,並且還通過不爲每個單元創建 新範圍來減少存儲器和提高速度重複的例子。

所以要保持你的模型作爲一個整數,你可以使用相當:

<select ng-model="datamodel" ng-options="dataitem for dataitem in data"> 
    <option value="">Please Select</option> 
</select> 

plunker

+0

它的工作原理!真棒!我只是將整數轉換爲字符串和所有集合。 – FShah

+0

我想將最大數字設置爲默認值,但不是來自.js文件,因此我正在使用ng-repeat。這裏是鏈接:(http://plnkr.co/edit/zJbQTVPaErP2dKe5gUXv?p=preview) – FShah

+0

@FShah認爲你仍然可以使用'ng-options',你可以分叉你的笨蛋來展示你的意思嗎?如果列表從最小值到最大值排序,您可以使用'ng-init'將您的模型值設置爲列表中的最後一個元素 – user2718281