[英]Calling a JavaScript function on an AngularJS Service
我正在为Kibana定制面板。 Kibana使用AngularJS。 有一个称为“过滤器”的服务。 该服务的代码可以在这里看到 。 我试图在运行时从面板中动态添加过滤器。 据我所知,我认为我可以做这样的事情:
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
经过一番调查,我将问题定位到集合似乎不是过滤器对象上的函数这一事实。 我运行console.log($scope.dashboard.current.services.filter);
时没有看到它的列表console.log($scope.dashboard.current.services.filter);
我糊涂了。 当我查看服务本身中的代码时,可以清楚地看到一个set方法。 但是,未在console.log中列出。 我在这里误会什么吗? 有没有办法在过滤器服务上调用set
函数? 如果是这样,怎么办?
谢谢!
看来您可能未正确使用服务,因为它们是$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);
}]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.