javascript - 回调函数未被调用

标签 javascript angularjs

代码如下:

$scope.$watch($scope.getWidth, $scope.adjustSidebar);

    $scope.adjustSidebar = function (newValue, oldValue) {
        if (newValue >= mobileView) {
            if (angular.isDefined($cookieStore.get('sidebarToggle'))) {
                $scope.sidebarToggle = $cookieStore.get('sidebarToggle');
            } else {
                $scope.sidebarToggle = true;
            }
        } else {
            $scope.sidebarToggle = false;
        }
    };

如果我将 $scope.adjustSidebar 的定义作为 $watch 的第二个参数插入,代码可以正常工作。一旦我尝试像这样提取它,代码就会中断(即 $scope.adjustSidebar 不会在事件触发时执行)。为什么是这样?如果我将函数存储在变量中并使用变量作为参数或使用实际定义作为参数有什么区别?

提前致谢。

最佳答案

将回调移动到函数调用之后。

$scope.adjustSidebar = function (newValue, oldValue) {
        if (newValue >= mobileView) {
            if (angular.isDefined($cookieStore.get('sidebarToggle'))) {
                $scope.sidebarToggle = $cookieStore.get('sidebarToggle');
            } else {
                $scope.sidebarToggle = true;
            }
        } else {
            $scope.sidebarToggle = false;
        }
    };

    $scope.$watch($scope.getWidth, $scope.adjustSidebar);

关于javascript - 回调函数未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202640/

相关文章:

javascript - 请稍等 使用 javascript 的动画 gif

javascript - 多行标签 OpenLayers3

javascript - 使用 ng-switch-when AngularJS 时无法附加 div?

javascript - 带有 ES3 输出的 Typescript ES7 描述符?

javascript - 当我从此处 map 中删除标记时,是否需要删除处理程序?

javascript - childscope 如何处理 ng-if 语句?具体在 <SELECT> 元素中

angularjs - AngularJS Controller 定义中是否存在 $scope 依赖注入(inject)?

javascript - AngularJs:当第 3 方库更改 DOM 时得到通知( knockout )

javascript - Google 如何在搜索结果点击后设置 HTTP Referrer

css - 在 bootstrap 网格中使用边距和填充