在HTML代码AngularJS中调用的JavaScript函数中使用$scope变量
Use $scope variable in a JavaScript function called from the HTML code - AngularJS
我正在使用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
如果它解决了你的问题,标记为答案
相关文章:
- $scope变量被视为字符串AngularJs
- $scope变量,ng隐藏/显示
- Ionic:AngularJS变量未使用$scope更新DOM
- $Scope变量在HTML中不更新,尽管在控制器中不断更新
- $scope变量发生更改时未触发Angular$watch
- 将Scope变量作为指针发送,并在控制器外部对其进行更改
- 正在从$scope变量中提取值
- 无法使用angularjs重置$scope变量
- 在 ng-click 中设置$scope变量指令
- 从服务返回值时$scope控制器的变量是未定义的
- 在从websocket服务器推送消息后更新$scope变量
- AngularJS中存在与$scope变量相关的问题.UI中的值未更改
- JavaScript未更新$scope变量的一部分
- 如何使用AngularJS在ng init中传递scope变量
- 如何访问ng-init或ng-checked中服务回调函数中声明的$scope变量
- 在我的HTML中用ng-init初始化$scope变量时出现问题
- 从 JSON 获取数据并将此元素添加到变量$scope
- 超时后循环中的javascript变量scope/close
- AngularJS:函数内部的变量$scope在函数外部未定义
- AngularJS.自动刷新 html 中的变量$scope