2014-04-23 5 views
0

나는 Kibana 용 사용자 정의 패널에서 작업 중입니다. Kibana는 AngularJS를 사용합니다. "필터"라는 서비스가 있습니다. 해당 서비스의 코드는 seen here 일 수 있습니다. 내 패널에서 런타임에 동적으로 필터를 추가하려고합니다. 내가 말할 수있는 것으로부터 나는 다음과 같이 할 수 있다고 생각했다 :AngularJS 서비스에서 JavaScript 함수 호출

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에 나열되어 있지 않습니다. 내가 여기서 뭔가를 오해하니? 필터 서비스에서 set 함수를 호출하는 방법이 있습니까? 그렇다면 어떻게?

감사합니다.

+0

이 질문은 여러분이 작업하는 소프트웨어에만 국한되며 따라서 여기에서 도움이되지 않을 수도 있습니다. 나는 그 곳의 근원을 잠시 들여다 보았다. 그리고 아무것도 나에게 튀어 나오지 않았다. 콘솔에 나열된 해당 서비스에 정의 된 다른 기능을보고 있습니까? –

+1

'filterSrv'는 어떻게 주입됩니까? 더 많은 코드를 게시 할 수 있습니까? 'set()'은'dashboard'가 아니라'filterSrv'에 있으므로,'filterSrv.set (filter, null, true)'와 같이 호출 할 가능성이 더 큽니다. –

답변

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);   
}]);