2016-02-22 46 views
4

试图找出如何获得角度中所选项目的ID和名称。基本上全新的js和角度,所以不太确定我做错了什么。我确定它很简单,我错过了。如何获得角度中的选定选项<select>

我有一个看起来像一个HTML元素:

<md-input-container> 
    <label>Difficulty</label> 
    <md-select ng-model="difficulty" ng-change="update()"> 
     <md-option ng-repeat="difficulty in difficulties"> 
      {{difficulty.Name}} 
     </md-option> 
    </md-select> 
</md-input-container> 

调用API来获取困难的名单还给下面的JSON

[{DifficultyID: 1, Name: "Easy"}, {DifficultyID: 2, Name: "Medium"}, {DifficultyID: 3, Name: "Hard"}] 

在我的控制器中我已经定义的方法

$scope.update = function() { 
      console.log($scope.item.Name); 
     } 

总是得到一个未定义的名称。

回答

3

ng-value可能是在这种情况下非常有用。看到工作Plunker

<md-select ng-model="difficulty"> 
    <md-option ng-value="opt" ng-repeat="opt in difficulties" ng-click="update(opt)"> 
     {{opt.Name}} 
    </md-option> 
</md-select> 

我介绍了opt变量,以消除重复difficulty。除此之外,我正在做的ng-click上的特定选项,而不是ng-change对父母md-select

+0

没错。谢啦。 –

+1

酷!乐于帮助! – oKonyk

2

您选择的选项应该在您在ng-model中设置的模型中。

这就是说访问您所选的选项您应该测试难度模型范围

$scope.difficulty 

应该把你所选的项目。

想看看它的工作尝试

$scope.$watch('dificulty',function(newVal,oldVal){ 
    console.log($scope.dificulty); 
}); 

在每个模型改变它会被打印出来。顺便说一句,我没有使用该指令。但是我没有看到该指令的可用属性支持ng-change。

希望它可以帮助

+0

噢,以及我可以得到这个工作,除非我似乎没有访问的难度,这主要是我'之后。 –

+0

尝试首先在控制器上初始化变量。所以把$ scope.dificulty = someValue – jstuartmilne