我有以下指令
(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/