2016-03-15 54 views
1

我得到了如下的datalist,併爲具有名稱和id屬性的顏色對象着色。從datalist ng-repeat角度獲取對象

<datalist id="opts"> 
<option ng-repeat="color in colors" value = "{{color.id}}">color.name</option> 
</datalist> 

我的問題是,我想運行一個函數與id和所選顏色的名稱。如何在不顯示視圖上的ID的情況下訪問它們?

<button ng-click="someFunction(color.id,color.name)">button </button> 
+0

可能幫助你http://stackoverflow.com/questions/35836719/suggestion-in-text-box-possible –

回答

1

你應該做手工,因爲ng-options指令將是不錯的選擇去,但遺憾的是它並不支持datalist。爲了獲得內部控制範圍內選擇價值,你需要添加ng-modeldatalist

標記

<datalist id="opts" ng-model="selectedColor"> 
    <option ng-repeat="color in colors" value = "{{color.id}}">color.name</option> 
</datalist> 

<button ng-click="someFunction(selectedColor)">button</button> 

,然後做色彩收集過濾器內部控制器如圖所示someFunction

$scope.someFunction = function(){ 
    var selected = $filter('filter')($scope.colors, {id: parseInt(selectedColor)}, true), 
     selectedColor; 
    if(selected){ 
     selectedColor = selected[0]; 
    } 
} 
+0

我嘗試selectedColor仍然undefined :( –

-1

你可以做下面。

直接傳遞對象 - '顏色'並在控制器中訪問'id','name'等。

HTML:

<button ng-click="someFunction(color)">button </button> 

JS:

$scope.someFunction = function (colorObj) { 
     // access colorObj.id, colorObj.name, etc. 
} 
+0

你不能傳遞'color'對象,因爲它沒有被選中'datalist' –

+0

它可能是如果他改變了從color.id到顏色的值 – kugyousha

0

使用角度表達在選項綁定{{color.name}}或使用value屬性

<option ng-repeat="color in colors" value = "{{color.id}}" ng-change="someFunction(color)">{{color.name}}</option> 

你也可以給一個嘗試在數據側使用

ng-change
IST 例子:

<datalist id="opts"> 
<option ng-repeat="color in colors" value = "{{color.id}}" ng-change="someFunction(color)">{{color.name}}</option> 
</datalist> 

現在的功能,您可以訪問這兩個ID和名稱...對於這個沒有必要的submit button

$scope.someFunction = function(colorobj){ 
     var colorid=colorobj.id; 
     var colorname=colorobj.name; 
    }