如何将两个值传递给ng-repeat中的ng-change函数

时间:2015-07-29 05:07:23

标签: angularjs angularjs-ng-repeat ng-repeat

这是我的HTML代码

<select ng-model="node.field.name" 
        data-nodrag 
        ng-options="value.label as value.label group by value.name for value in myOptions" 
        ng-change="getConditionsByType(node.field.name,value.name)">
</select>

何时使用getConditionsByType(node.field.name,value.name)我将value.name视为未定义

如何在更改选项时访问ng-repeat中的值!

3 个答案:

答案 0 :(得分:3)

value未在ng-change的范围内定义 - 它仅在ng-options的微观语法表达式中定义。

相反,让模型成为&#34;值&#34; - 即myObjects

的项目
<select ng-model="selectedOption" 
        ng-options="value as value.label group by value.name for value in myOptions" 
        ng-change="onChange()">
</select>

这意味着您无法将node.field.name设置为&#34; value.name&#34;直接 - 在ngChange代替:

$scope.onChange = function(){
   $scope.node.field.name = selectedOption.name;
   getConditionsByType($scope.node.field.name, selectedOption.name)
}

答案 1 :(得分:2)

我想你想要这个..

<select ng-model="node.field" 
        data-nodrag 
        ng-options="value as value.label group by value.name for value in myOptions" 
        ng-change="getConditionsByType(node.field.name, node.field.label)">
</select>

这不是仅设置name的{​​{1}}属性,而是设置整个node.field。然后,您可以参考node.fieldnode.field.name

如果我误解了node.field.labelvalue没有相同的属性,那么在范围上使用中间字段来保存值,观察它并将其转换为您需要放入的值node.field(或在node.field内进行转换。)

答案 2 :(得分:2)

选中此项:http://plnkr.co/edit/RRWSYmEfCZu8aOrtNctl?p=preview

主要变化

<select style="width: 100px;" ng-model="node.field.name" ng-change=temp() 
    ng-options="value.name as value.label group by value.name for value in myOptions"></select>