繁体   English   中英

在AngularJS服务上调用JavaScript函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM