我有以下问题:我在控制器中有一个函数,函数决定$ 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>
答案 0 :(得分:5)
对于局部解决方案,问题是普通事件监听器将绕过摘要周期。这意味着您的$scope
正在更新,但Angular并不了解它,因为触发更新的事件不在Angular的雷达上,因此Angular不会更新模板。 ( 错误 )解决此问题的方法是使用rfr强制触发摘要。
但是,再一次,这是一个非Angular解决方案,如果你用ng-click
解决了你遇到的任何问题,那么你会更好。