我有以下指令
(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
表示未定义'。
我正在尝试根据ng-repeat
中的数据突出显示spreadsheet
中的某些行,因此我将所需的类附加到$scope.level
,然后在代码中使用ng-class="level"
{1}}。
有什么想法吗?
答案 0 :(得分:1)
这应该纠正它:
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循环,看起来更适合你的情况
答案 1 :(得分:0)
你的函数level
可能没有返回值,修改这个函数
if (row.Name.indexOf(record.event) > -1) {
console.log('Highlighting: level' + row.Level);
return 'level' + row.Level;
}else{
return 'hello world';
}
然后,如果行console.log($scope.level);
显示hello world
,则更改函数level()
的逻辑