2013-09-26 16 views
4

我生成使用ng-repeat目錄一些<option>元件。使用ng-repeat而不是ng-options是故意的。角產生一個空<option>

然而,它產生在除了實際陣列的空選項。下面的代碼:

<select name="type" class="form-control" ng-model="selected_type" ng-change="select_change()" > 
    <option ng-repeat="type in types" value="{{type.value}}">{{type.name}}</option> 
</select> 

$scope.types = [ 
    {value: '1', name: 'Sale'}, 
    {value: '2', name: 'Other'} 
]; 
$scope.selected_type = $scope.types[0].value; 

而且小提琴:http://jsfiddle.net/HB7LU/521/

+0

爲什麼是'NG-options'不適合你打算實現什麼?從選擇 – kubuntu

+0

刪除NG-模型解決了該問題 - http://jsfiddle.net/HB7LU/529/ – user700284

+0

thsi實際工作 http://jsfiddle.net/aBPdv/ – thedjaney

回答

1

這裏的工作小提琴,用NG選項

http://jsfiddle.net/HB7LU/527/

<select ng-model="selected_type" ng-change="select_change()" ng-options="c.name for c in types"> 

然後在的script.js:

$scope.selected_type = $scope.types[0]; 

雖這麼說,因爲你只是部分使用angularjs,你可以在你真正的po之前將數據映射到一個數組中在PHP中使用st。

1

只需使用你的選項標記的NG-模型屬性不是在你的選擇標籤(使用其中的NG-重複定義)這樣的:

<select ng-change="select_change()"> 
    <option ng-model="selected_type" ng-repeat="type in types" value="{{type.value}}">{{type.name}}</option> 
</select> 

然後改變你的

$scope.selected_type = $scope.types[0].value;

$scope.selected_type = $scope.types;

但你的NG-變化不會起作用,因爲沒有NG-模型屬性被設置成不ngModelController是分配給該元素。

所以如果你想知道什麼時候選擇變化的值你必須對select元素做一個指令。

由於所有這些原因ng選項總是,我說永遠是正確的方向選擇輸入使用情況。

+1

這是正確的方向。但是,這樣做,我無法檢測哪些選項是選擇 –

+0

當然,因爲NG-變化總是上的選擇! –

1

試NG選項,而不是把選項標記自己的名字:

<div ng-controller="MyCtrl"> 
    <select ng-model="selected_type" ng-change="select_change()" ng-options="type.value as type.name for type in types"> 
    </select> 
</div> 

http://jsfiddle.net/aBPdv/

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

//myApp.directive('myDirective', function() {}); 
//myApp.factory('myService', function() {}); 

function MyCtrl($scope) { 
    $scope.types = [ 
    {value: '1', name: 'Sale'}, 
    {value: '2', name: 'Other'} 
    ]; 
    $scope.selected_type = $scope.types[0].value; 
    $scope.select_change = function(x){ 
     alert($scope.selected_type); 
    } 
}