javascript - 如何从 Controller 函数内部获取 $scope?

标签 javascript angularjs angularjs-scope

我有以下问题:我在 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/

相关文章:

javascript - CKEditor div 元素被替换而不是填充

javascript - 具有隔离范围 : How to set ngModel to the correct scope? 的指令中的表单输入

angularjs - 通过查询字符串传递 "Bearer"时 SignalR 身份验证失败

javascript - 如何 forEach where (angular.js)

javascript - angularjs中如何调用sync和async?

angularjs - Angular JS Controller 查看绑定(bind)在窗口大小调整时未更新

javascript - Google map Javascript API v3 错误消息 "Key is Disabled"

javascript - 如何动态获取所选选项的值并将其存储到变量中?

javascript - DataTables - 创建自定义分页样式(加载更多样式)

javascript - 为 Bootstrap 菜单项创建指令