如何从控制器功能中获取$ scope?

Lev*_* F. 0 javascript angularjs angularjs-scope

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

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

由于多种原因,我无法使用ng-click.更新: 由于photoswipe gallery和socialshare,我无法使用ng-click .我想添加自定义FB共享,如果我使用ng-click它将关闭photoswipe打开的图像.请看这里的例子.打开图像,然后单击左上角的自定义共享按钮

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

如果我尝试记录它作为魅力的值,例如.

console.log($scope.name); //will work perfectly
Run Code Online (Sandbox Code Playgroud)

在html中它不会绑定值:

<div ng-controller="myController">
<button id="my-id">
   <p>{{name}}</p>
</button>
</div>
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 5

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

但同样,这是一个非Angular解决方案,如果您修复了与之相关的任何问题,那么您的解决方案会更好ng-click.