2015-01-17 5 views
0

angularjs에 문제가 있습니다. 2는이 전망이 : "변경"1이 angularjs - 라우팅시 현재 뷰 데이터를 유지하는 방법

  • txtBox1의 텍스트를 변경하려면 "변경"이라는 버튼을하기
    • 기본 빈 값으로 txtBox1라는 텍스트 상자 이러한 컨트롤을 가지고

      1. 보기
  • 보기 2
    • 내가 뷰 1로 이동 txtBox2
  • 먼저라는 이름의 텍스트 상자, txtBox1의 내용이 "변경!"로 변경 버튼을 클릭합니다. 그런 다음 View2로 이동 한 후 View1로 돌아갑니다.

    그래서 어떻게 내가 View1에서 txtBox1에 입력 한 데이터를 유지할 수 있습니까? DurandalJs를 사용하여 탐색 할 때 현재 데이터를 볼 수있는보기 캐싱 옵션이 있지만 angularj를 사용하는 방법을 모르겠습니다.

    enter image description here

    +0

    단순한 코드가 도움이 될 수 있지만 기본 개념은 두 컨트롤러에서 사용되고 값 1을 값 1에 저장하는 dataservice를 만들어야한다는 것입니다. 그러면 view2에서도 필요할 경우 액세스 할 수 있습니다.그 필요가 없다면, 뷰 2는 앱에 의해 인스턴스화 될 것이고 앱이 닫힐 때까지 인스턴스화 된 채로 남아 있기 때문에 서비스를 참조 할 필요가 없습니다. – Beartums

    +0

    코드를 게시 할 수 있습니까? – Ved

    답변

    0

    @jimmy의 NG : 당신은 당신의 데이터도 새로 고침 후 저장 하시겠습니까? 중요한거야.

    myapp.service('viewDataManager', [function() { 
        var data = {}; 
        // TODO: optionally via HTML5 getter/setter way 
        return { 
        get: function (key) { return data[key]; }, 
        set: function (key, newData) { data[key] = newData; } 
        }; 
    }]); 
    
    :

    당신은 그냥 그 값을 현재의 응용 프로그램 실행 및 각 기본보기 1 Ctrl 키를 가지고, 당신은 도우미 서비스 클래스를 통해 폼 데이터 (데이터 관리자 서비스)를 저장할 수 추정합니다

    $scope.init = function() { 
        $scope.myModel.formStates = view1DataManager.get('view1FormData'); 
    }; 
    
    : 그 상태를 다시로드, 초기화/생성자에 다시

    $scope.$on('$destroy', function() { 
        view1DataManager.set('view1FormData', $scope.myModel.formStates); 
    }); 
    

    다음 view1Controller 당신의 파괴에 그런

    , 그냥 양식 데이터를 설정

    이것은 현재 실행중인 응용 프로그램의 데이터를 유지하기위한 것입니다. 이후 인스턴스의 경우 데이터 관리자를 업데이트하여 localStorage 또는 websql 또는 심지어 쿠키로 설정하십시오 (권장하지는 않음).

    참고 : $ rootScope에 모든 내용을 저장할 수는 있지만 어떤 방식 으로든 (아키텍처, 성능 등) 하드 코어 일뿐입니다. 그래서 확실히 "거기 가지 마라".

    UPDATE : @jimmyng : 그것은 개체가 휴지통과 수요에 다시 인스턴스화 (물론)되고 있기 때문에 객체 (일명 Ctrl 키)에 그 상태를 저장하기 위해 기본적으로 불가능하다.

    모든 UI 휘발성 데이터가 "formStates"에 저장되어 있다고 가정하면 위 코드가 필요한 것을 처리합니다. AngularJS로 작업 중이므로 widget은 ng-model에 바인딩됩니다. 선택 항목 등에 대한 옵션을 넣을 수도 있습니다.

    // E.g.: 
    dropdownlist ---> ng-model -> formStates.selectedXXX 
    dropdownlist ---> ng-options-> formStates.xxxOptions 
    textbox ---> ng-model -> formStates.name 
    etc 
    
    +0

    음, 실제로 양식 데이터를 변수에 저장하고 싶지 않습니다. 다른보기로 이동하는 동안 현재 제어 상태가 변경되지 않도록하려고합니다. View 1에서 다음 작업을 수행했다고 상상할 수 있습니다. 드롭 다운 목록을 선택하고 텍스트 상자에 입력하십시오. 그런 다음 View 2로 이동하여 일부 변수를 확인한 다음 View 1로 돌아가 현재 작업을 계속 진행합니다. 하지만 모든 것이 사라지고 View 1이 새로 고쳐집니다. –

    +0

    @jimmyng : 업데이트 된 답변 확인 –

    관련 문제