在AngularJS中传递此参数

时间:2018-04-11 05:19:46

标签: javascript html angularjs

使用AngularJS时,如何通过我的函数传递html元素。如果您不使用AngularJS,这将有效,但我认为AngularJS将“this”关键字与其他父级混淆。我如何让这段代码起作用?

angular.module('myApp', []).controller('myCtrl', function($scope) {
  $scope.MyFunction = function(element) {
    alert(element.value);
    element.focus();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
  <input ng-click="MyFunction(this)" value="Hello">
</div>

3 个答案:

答案 0 :(得分:2)

我认为你正在寻找这个。

<input ng-click="MyFunction($event)" value="Hello">

  // while in your controller

angular.module('myApp', []).controller('myCtrl', function($scope) {
  $scope.MyFunction = function($event) {

  //reference to the DOM element triggered the function
   var element =   $event.target;   
    element.focus();
  }
});

但这不是很好的做法,以这种方式在ANGULAR JS中做到这一点

答案 1 :(得分:1)

您可以使用ng-model为元素分配值,这是2路绑定:)

    angular.module('myApp', []).controller('myCtrl', function($scope) {
      $scope.theValue = "Hello";
      $scope.MyFunction = function(value) {
        alert('Passed Value : ' + value  + ' Model Value : ' + $scope.theValue);
      }
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
  <input ng-model="theValue" ng-blur="MyFunction(theValue)">
</div>

答案 2 :(得分:0)

在棱角分明,你无法以这种方式工作,请尝试使用event.target。你应该尝试以下方式:

    <input ng-click="MyFunction()" value="Hello">

    angular.module('myApp', []).controller('myCtrl', function($scope) {
      $scope.MyFunction = function() {
        alert($(event.target).attr('value'));
        $(event.target).focus();
      }
    });