javascript - $scope.data 未定义但 $scope.data 存在于 $scope

标签 javascript angularjs

我在这里有我的 javascript 代码:

 define(['controllers/controllers', 'services/alerts'], function(module) {
  'use strict';
  return module.controller('alerts', [
    '$scope', '$http', 'alerts', function($scope, $http, alerts) {
    console.log('alerts controller initialized');
    $scope.settings = {};
    return $scope.submit = function() {
      $scope.busy = true;
      console.log('scope', $scope);
      return console.log('data', $scope.data);
    };
  }
]);

});

我尝试记录 $scope.data 的内容我希望包含 ng-model 的值=> data.followers但总是显示未定义但是当我尝试记录 $scope 的值内容时, $scope.data存在。如图所示:

the log

我尝试初始化 $scope.data但在更改 ng-model 的值后它总是返回一个空数组=> data.followers .这是我初始化 ng-model 时的代码(在 haml 中) :

 %input{:type => "checkbox", "ng-checked" => "settings.#{$key}", "ng-model" => "data.#{$key}", "ng-true-value" => "true", "ng-false-value" => "false", "ng-click" => "submit()"}

有什么想法吗?

更新:

已经解决了这个问题。我所做的只是初始化 $scope.data 并使用 data.#{$key} 在 ng-checked 中。那让我卡住了。这里是 Angular 程序员新手。

最佳答案

当延迟加载 Angular 组件时,需要使用 $scope.$apply()。当使用 Require 或其他一些方法延迟加载组件时,这些函数将注册到 Angular 的 $digest 循环之外的 $scope 中。使用 $scope.$apply() 使 $digest 知道您的绑定(bind),并将它们带到应用程序实例中。

您可能还需要使用 module.register.controller 而不是 module.controller

define(['controllers/controllers', 'services/alerts'], function(module) {
  'use strict';
  return module.register.controller('alerts', [
    '$scope', '$http', 'alerts', function($scope, $http, alerts) {
    console.log('alerts controller initialized');
    $scope.settings = {};
    return $scope.submit = function() {
      $scope.busy = true;
      console.log('scope', $scope);
      return console.log('data', $scope.data);
    };
    $scope.$apply();
  }
]);

关于javascript - $scope.data 未定义但 $scope.data 存在于 $scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21898030/

相关文章:

javascript - Chartjs + Vue.js - 无法读取未定义的属性 '_meta'

javascript - 从用于 Chrome 远程接口(interface)的 Selenium WebDriver 中提取 nodeId

html - CSS:底部居中引导分页元素

javascript - 如果来自外部 ng-repeat $scope 的更新也未定义,则 ng-repeat 中的 AngularJS ng-model $scope 未定义

javascript - 嵌套的 ng-repeat-start/ng-repeat-end

javascript - 如何从同一对象的方法内的单击事件调用对象属性

javascript - Bootstrap 弹出窗口在第一次悬停时偏移

javascript - 将 Controller 中的输入类型时间更改为秒

javascript - 编写 Angular 指令时应该将通用代码放在哪里?

javascript - 防止在 Sails.js 中使用删除和更新方法