我正在为Kibana制作一个自定义面板。 Kibana使用AngularJS。有一种叫做“过滤器”的服务。该服务的代码可以是seen here。我正试图从我的面板动态添加过滤器。据我所知,我认为我可以这样做:
var n = getName();
var filter = {
alias: 'My Filter',
editing: false,
query: 'name:"' + n + '"',
type: 'querystring'
};
$scope.dashboard.current.services.filter.set(filter, null, true);
不幸的是,这种方法似乎不起作用。相反,我收到的错误是:
TypeError: undefined is not a function
经过一番调查后,我已经确定了问题,即set似乎不是过滤器对象的函数。当我运行console.log($scope.dashboard.current.services.filter);
我很困惑。当我查看服务本身的代码时,我可以清楚地看到一个set方法。然而,它没有在console.log中列出。我在这里误解了什么吗?有没有办法在过滤服务上调用set
函数?如果是这样,怎么样?
谢谢!
答案 0 :(得分:1)
看起来您可能错误地使用了服务,因为它们是注入$scope
上通常不可用的对象。要使用过滤器服务,您可以执行以下操作:
// inject the filter service into your controller
myModule.controller('MyCtrl', ['filterSrv', function(filterSrv){
// create your filter object and add it
var n = getName();
var filter = {
alias: 'My Filter',
editing: false,
query: 'name:"' + n + '"',
type: 'querystring'
};
filterSrv.set(filter, null, true);
}]);