首先 - 让我为完全是 Angular 新手而道歉。
我目前正在开发一个新的网络应用程序并尝试遵循样式指南(https://github.com/johnpapa/angular-styleguide)
我的工作正常,但目前必须在我的每个控制器中声明我的过滤器功能。
我不希望有这种重复并在自己的文件中有一份副本,但如果我这样做并尝试在我的模板中使用它,它就不会被识别。
我的过滤功能是:
(function() {
'use strict';
angular
.module('lfms')
.filter('includeDeleted', includeDeleted);
includeDeleted.$inject = ['property', 'includeDeleted'];
function includeDeleted(property, includeDeleted) {
if (includeDeleted) {
return function (item) {
return true;
}
} else {
return function (item) {
return !(item[property]);
}
}
}
})();
我正在尝试按如下方式使用它:
<tr ng-repeat="crew_member_detail in vm.crew_members | filter: vm.includeDeleted('deletedAt', vm.showDeleted) | filter:vm.search | orderBy: predicate:reverse">
如果我在控制器中包含该功能(如下)一切正常:
(function() {
'use strict';
angular
.module('lfms')
.controller('CrewController', CrewController);
CrewController.$inject = ['CrewData', '$filter'];
function CrewController(CrewData, $filter) {
var vm = this;
vm.crew_members = CrewData("");
vm.showDeleted = false;
vm.includeDeleted = includeDeleted;
function includeDeleted(property, includeDeleted) {
if (includeDeleted) {
return function (item) {
return true;
}
} else {
return function (item) {
return !(item[property]);
}
}
}
}
})();
我试过删除“vm”。在过滤器之前,但仍然没有。我认为这是一个范围界定问题,但似乎找不到任何东西来指导我找到解决方案。
感谢您提供的任何帮助!