试图理解为什么我在尝试使用jQuery函数构建对方法的ng-click调用时获得undefined
。
以下是其中一个例子:
<a href="#" class="btn btn-default" ng-click="angularMethod($('input[name=__RequestVerificationToken]').val())">...</a>
我在ng-controller上的:
$scope.angularMethod = function(token) {
$log.debug(token);
}
在控制台上呈现undefined
消息。
我在角度js文件之前加载了一个完整的jQuery js文件。 这不应该有用吗?
答案 0 :(得分:2)
我在角度js文件之前加载了一个完整的jQuery js文件。这应该不起作用吗?
不,ngClick
和类似指令不是onclick
等属性。它只是一些自定义属性,带有一些字符串值,由Angular解析和评估(如果您感兴趣,请参阅parse.js)。您可以提供的那些表达式在当前范围对象的上下文中进行评估。
所以现在你应该能够理解为什么它不适用于你的情况。你有名为$
的范围属性,它基本上指向jQuery?我猜不会。从技术上讲,它可以使你的例子工作,但你不应该像这样混合jQuery和Angular。它只会使您的代码极难阅读和支持。
还要检查这个关于正确使用jQuery在Angular中工作的好问题“Thinking in AngularJS” if I have a jQuery background?。
答案 1 :(得分:0)
检查这个小提琴我准备好你展示你可以使用angularjs的不同解决方案:
http://jsfiddle.net/joshdmiller/HB7LU/
<div ng-controller="MyCtrl">
<input name="__RequestVerificationToken" ng-model="myvalue">
<a href="#" class="btn btn-default" ng-click="angularMethod(); angularMethodTWO()" ng-model="myvalue">CLICK</a>
</div>
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.name = 'Superhero';
$scope.angularMethod = function () {
alert("WITH NG-MODEL:" + $scope.myvalue);
}
$scope.angularMethodTWO = function () {
alert("WITH ANGULAR ELEMENT:" + angular.element(document.querySelectorAll("[name=\'__RequestVerificationToken\']")).val());
}
}
希望它能帮助!!
编辑使用较新版本更改了jsfiddle网址(另一个版本不正确)