使用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>
答案 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();
}
});