如何从控制器功能内部获取$scope

How to get $scope from inside a controller function?

本文关键字:获取 scope 内部 功能 控制器      更新时间:2023-09-26

>我有以下问题:我在控制器中有一个函数,该函数决定 $scope.name 的值

app.controller('myController', ['$scope', function($scope) {
    function myFunction() {
       $scope.name = 'myName';
    }
document.getElementById('my-id').addEventListener("click", myFunction);
}])

由于多种原因,我无法使用ng-click。更新:由于照片滑动图库和社交共享,我无法使用ng-click。我想添加自定义FB共享,如果我使用ng单击,它将关闭照片擦除打开的图像。请参阅此处的示例。打开图像,然后单击左上角的自定义共享按钮

请注意,即使我在这里使用示例,它也不会将我的 $scope.name 绑定到 html。

如果我尝试记录该值,它将用作魅力,例如。

console.log($scope.name); //will work perfectly

在 html 中,它不会绑定值:

<div ng-controller="myController">
<button id="my-id">
   <p>{{name}}</p>
</button>
</div>

对于主题解决方案,问题是普通事件侦听器将绕过摘要周期。这意味着您的$scope正在更新,但 Angular 不知道,因为触发更新的事件不在 Angular 的雷达上,因此 Angular 不会更新模板。此问题的((解决方案是使用$scope.$apply强制触发摘要。

但同样,这是一个非 Angular 解决方案,如果您修复ng-click遇到的任何问题,您会好得多。