如何从控制器函数中获取$ scope?

时间:2016-02-15 09:45:51

标签: javascript angularjs angularjs-scope

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

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

由于多种原因,我无法使用ng-click。的更新: 由于photoswipe图库和socialshare,我无法使用ng-click。我想添加自定义FB共享,如果我使用ng-click它将关闭photoswipe打开的图像。 请参阅示例here。打开图片,然后点击左上角的自定义分享按钮

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

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

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

在html中,它不会绑定值:

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

1 个答案:

答案 0 :(得分:5)

对于局部解决方案,问题是普通事件监听器将绕过摘要周期。这意味着您的$scope正在更新,但Angular并不了解它,因为触发更新的事件不在Angular的雷达上,因此Angular不会更新模板。 ( 错误 )解决此问题的方法是使用rfr强制触发摘要。

但是,再一次,这是一个非Angular解决方案,如果你用ng-click解决了你遇到的任何问题,那么你会更好。