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