我正在使用Angular,我试图得到$scope在JavaScript函数中使用它。下面是一个例子:
我有一个像这样的html标签:
<a id="doSomething" onclick="javascript: doSomething(this);">Do Something</a>
<div ng-show="flag">Click!</div>
和像这样的JavaScript函数:
function doSomething(obj) {
//$scope.flag = true;
return true;
}
我想在这个函数中使用$作用域。我还没找到注射的方法。问题是我必须用这种方法来调用函数。你有什么解决办法吗?我很感激!
谢谢!
如果你真的必须…方法如下:
HTML:<a onclick="doThing(this);">Do it!</a>
JS:
function doThing(el) {
var $scope = angular.element(el).scope();
$scope.thing = newVal;
$scope.$apply(); //tell angular to check dirty bindings again
}
一定要阅读angular的文档。元素:http://docs.angularjs.org/api/angular.element对于范围。美元应用:http://docs.angularjs.org/api/ng。rootScope.Scope #美元适用
你的用例是什么?也许有更好的办法
你也可以这样做:
JS:
$scope.doThis = function(str){
alert(str);
$scope.$apply();
}
HTML: <button onclick="angular.element(this).scope().doThis('TEST');"></button>
警告-作用域嵌套可能会影响结果,但如果angular代码在父控件中,那么在
这与@Andy的答案相同,但我提到它是为了防止人们想要了解如何从事件而不是this
获得$范围:
<a onclick="doThing(event);">Do it!</a>
JS:
function doThing(ev) {
var $scope = angular.element(ev.srcElement).scope();
$scope.flag = true;
$scope.$apply(); //tell angular to check dirty bindings again
}
你应该调用angular的ng-click,然后从那里传递作用域。
下面是我为您创建的示例。http://plnkr.co/edit/UDLJYuZhR4yfiocSPjKJ
如果它解决了你的问题,标记为答案