我有以下问题:我在 Controller 中有一个函数,该函数决定 $scope.name 的值
app.controller('myController', ['$scope', function($scope) {
function myFunction() {
$scope.name = 'myName';
}
document.getElementById('my-id').addEventListener("click", myFunction);
}])
由于多种原因,我无法使用 ng-click。 更新: 由于 photoswipe 我无法使用 ng-click画廊和socialshare 。我想添加自定义 FB 共享,如果我使用 ng-click 它将关闭 photoswipe 打开的图像。 请参见示例here 。打开图像并单击左上角的自定义共享按钮
注意,即使我使用这里的示例,它也不会将我的 $scope.name 绑定(bind)到 html。
如果我尝试记录该值,它就会发挥作用,例如。
console.log($scope.name); //will work perfectly
在html中它不会绑定(bind)值:
<div ng-controller="myController">
<button id="my-id">
<p>{{name}}</p>
</button>
</div>
最佳答案
对于主题解决方案,问题在于普通事件监听器将绕过摘要周期。这意味着您的 $scope
正在更新,但 Angular 并不知道这一点,因为触发更新的事件不在 Angular 的雷达范围内,因此 Angular 不会更新模板。此问题的(坏)解决方案是使用 $scope.$apply
强制触发摘要。
但是,这是一个非 Angular 解决方案,如果您使用 ng-click
解决您遇到的任何问题,情况会好得多。
关于javascript - 如何从 Controller 函数内部获取 $scope?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35406007/