在HTML代码AngularJS中调用的JavaScript函数中使用$scope变量

Use $scope variable in a JavaScript function called from the HTML code - AngularJS

本文关键字:变量 scope 函数 代码 HTML AngularJS 调用 JavaScript      更新时间:2023-09-26

我正在使用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获得$范围:

HTML:

<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

如果它解决了你的问题,标记为答案