从ng-repeat对ng-repeat项目中识别事件源

Ian*_*ton 3 angularjs

如果我有....

<ul>
   <li ng-repeat="s in collection">
     <select ng-change="update()">
        <option></option>
     </select>
   </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

如何获取引发update()调用的特定选择的引用?

mar*_*rko 10

喜欢这个&heres小提琴:

<div ng-controller="MyCtrl">
  <ul>
   <li ng-repeat="s in collection">
     Hello I am {{s.name}} & these are my options
     <select ng-options="o as o for o in s.options" ng-model="s.selectedOption" ng-change="optionChanged()">
     </select>
   </li>
</ul>
</div>

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

function MyCtrl($scope) {
    $scope.collection = [
        {'name':'one', 'value':1, 'options':['A','B']},
        {'name':'two', 'value':2, 'options':['C','D']}
    ];

    $scope.optionChanged = function(){
        console.debug(this.s.selectedOption);
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

  • 好问题.当我在与ng-repeat斗争时,我遇到了这个问题.这里有一些争论http://stackoverflow.com/questions/11605917/this-vs-scope-in​​-angularjs-controllers,似乎因为这是一个ng-repeat-directive,它将创建子范围我在哪里可以访问它的模型,因为那是"调用方法的上下文".我觉得更"直接金属" - 需要对ng-repeat的源代码进行一些研究. (2认同)