如何使用angularjs(过滤服务)没有HTML (chrome扩展)



我尝试在我的chrome扩展中使用过滤器angularjs服务。但我不知道如何获得/注入它在我的功能。目前我有:

chrome.contextMenus.onClicked.addListener(function(info, tab) {
    result = $filter('filter')(jsonArray, info.selectionText, function (actual, expected) {
        return actual.toString().toLowerCase().indexOf(expected.toLowerCase()) == 0;
    });
    console.log(sug);
});

但是显然我有:$filter没有定义。我还想使用$http服务来获取我的jsonArray

无论您在哪里使用$filter,您都需要为其添加依赖项。您可以通过提供$filter作为main函数的参数来添加依赖项。

如果添加内部控制器:

    .controller('MainCtrl', function($scope, $filter) {
      $scope.originalText = 'hello';
      $scope.filteredText = $filter('uppercase')($scope.originalText);
});

如果在工厂/服务中添加:

app.factory('myService', ['$filter', function($filter)

这个链接可以帮助您了解更多信息:在AngularJs的服务中注入dateFilter

解决方案是:

var myInjector = angular.injector(["ng"]);
var $filter = myInjector.get("$filter");