2014-06-19 3 views
0

내 프로그램에서 사용자가 선택하여 검색 한 필터를 추적하는 방법을 구현하려고합니다. 입력은 텍스트 상자, 여러 텍스트 상자에 표시됩니다. 각 옵션 (TimeStamp, SourceHost, UUID 등)에 대한 텍스트 상자가 있습니다. [내부 응용 프로그램을 작성하고 있습니다]. 내 매개 변수에 대한 필터 목록을 수행 할 수 있어야하고 Array 객체를 사용하기로 결정했지만 몇 가지 문제가 있습니다. 내 배열을 초기화하지만, 다른 기능배열이 여러 각도로 배열 된 배열

app.controller("AppCtrl", function($http, $scope){ 
    var app= this; 
    $scope.filterList = []; 
    $scope.filterList.push("test"); 
    console.log($scope.filterList); 
    $scope.incData = function(page, filterList){ 
     callingIrrelevantFunction(page) 
     console.log($scope.filterList); 

첫 번째 CONSOLE.LOG 출력 "테스트"의 정보를 액세스 할 수 없습니다. 하지만 나중에 사용할 때 (이것은 의도 한 유스 케이스가 아니므로 배열 범위를 지정하고 함수 내부에서 호출 할 수 있도록하려는 경우) 출력이 올바르지 않습니다. 실제로 의도 된 유스 케이스는 URL 끝에 추가 할 것입니다.

편집 :

app.controller("AppCtrl", function($http, $scope){ 
    var app = this; 
    $scope.filterList = []; 
    $scope.filterList.push("uuid=9022"); 
    $scope.filterList.push("source_host=Kani"); 

    function foobar(filterList){ 
     console.log("inside foobar"); 
     console.log(filterList); 
    } 
    foobar($scope.filterList); 
}); 

출력 "[]" 여기 내 코드의 공유 버전입니다.

편집 # 2 :

없이, 내 코드 그냥 배열을 변경 "$ 범위." 그 앞에 코드가 작동합니다. 하지만 나는 "$ 범위"가 필요하다고 생각합니다. 각 지시어로 작업 할 수 있습니다.

+0

코드에서 배열에 왜 같은 내용이 없는지 나는 알 수 없습니다. 당신은 다른 기능들이 콘텐츠를 부드럽게 할 수도 있습니다. 여기에 표시되지 않는 코드의 일부. –

+0

@DayanMorenoLeon을 에코, 전체 컨트롤러를 게시 할 수 있습니까? –

+0

'callingIrrelevantFunction (page)'을 $ scope.filterList?로 변경 한 이유는 무엇입니까? –

답변

0

문제는 '공유 가능'버전에서 $scope.filterList.push에 문자열 값을 할당하는 것입니다. 실제로 값을 배열로 밀어 넣지는 않습니다.