javascript - 使用 array.prototype.foreach 的 $scope 变量 'undefined'

标签 javascript angularjs angularjs-directive

我有以下指令

(function() {

  'use strict';

  angular
    .module('app')
    .directive('rcLevel', ['spreadsheet', rcLevel]);

  function rcLevel(spreadsheet) {
    return {
      restrict: 'A',
      scope: {
        record: '='
      },
      templateUrl: 'js/directives/rcLevel.html',
      controller: function($scope) {
        $scope.spreadsheet = spreadsheet.data;
        $scope.propsOpen = false;
        $scope.props = Object.keys($scope.record.properties).length > 0;
        $scope.level = level($scope.record);
        console.log($scope.level);

        // Logic

        function level(record) {

          $scope.spreadsheet.forEach(function(row) {
            if (row.Name.indexOf(record.event) > -1) {
              console.log('Highlighting: level' + row.Level);
              return 'level' + row.Level;
            }
          });
        }

      }

    };
  }
})();

我将它与ng-repeat一起使用。一切正常,但是,$scope.level 据说是未定义的。

level 函数内的控制台日志记录工作正常,但控制台日志记录 $scope.level 显示“未定义”。

我试图根据 spreadsheet 中的数据突出显示 ng-repeat 中的某些行,因此我将所需的类附加到 $scope。 level,然后在代码中将其用作 ng-class="level"

有什么想法吗?

最佳答案

这应该可以纠正它:

      for (var i = 0; i < $scope.spreadSheets.length; ++i) {
        if ($scope.spreadSheets[i].Name.indexOf(record.event) > -1) {
          console.log('Highlighting: level' + row.Level);
          return 'level' + $scope.spreadSheets[i].Level;
        }
      });

说明: foreach 内部的函数返回的内容不会传播到任何地方。您所做的如下:

function a(){
   b();
}

function b(){
   return true;
}

if (a()) => always falsy

编辑

我将 foreach 更改为 for 循环,这看起来更适合您的情况

关于javascript - 使用 array.prototype.foreach 的 $scope 变量 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822112/

相关文章:

javascript - 如何复制 'not in' 或 'where' 行为?

javascript - 如何匹配我创建的列表中的国家/地区,然后在该国家/地区在列表内时采取行动? (GeoIP 重定向)

javascript - 我在哪里可以订阅浏览器发布前要废弃的 Javascript API 列表?

java - Angular html5 模式和 HAL 浏览器

javascript - Angular 2 选择菜单值

javascript - 如何多次使用 Angular 分量?

javascript - angular 1.4.x ngOptions 将值的类型插入到值属性中

AngularJS:是否可以在没有 $watch 的情况下对 ng-bind-html 进行后处理?

html - 如何在 AngularJS 自定义指令中对 Angular 移动父 <div>

javascript - 格式化 &lt;input&gt; 以将货币显示为用户类型