2017-08-25 12 views
0

私は別の状態になるたびにテンプレートとコントローラをリフレッシュしています。私はそれを望んでいない、私は私がhome.htmlに変更するとcontact.htmlのフォームに入力した値を保持したい。私はここで、V1 +
アンギュラバージョン1.6に& UI-ルータを使用してい は私の設定です:AngularJS UI-Router - 毎回テンプレートを再ロードせずに状態を変更します。

function() { 
     "use strict"; 
     angular.module("App").config(["$stateProvider", "$urlRouterProvider", "$locationProvider", "$compileProvider", function(a, b, c, d) { 
      c.html5Mode(false), c.hashPrefix(""), b.otherwise("/"), a.state("home", { 
       url: "/", 
       templateUrl: "views/home.html", 
       controller: "HomeCtrl" 
      }).state("projekte", { 
       url: "/projekte", 
       templateUrl: "views/projects.html", 
       controller: "ProjectsCtrl" 
      }).state("labor", { 
       url: "/labor", 
       templateUrl: "views/lab.html", 
       controller: "LabCtrl" 
      }).state("kontakt", { 
       url: "/kontakt", 
       templateUrl: "views/contact.html", 
       controller: "ContactCtrl" 
      }) 
      d.debugInfoEnabled(false); 
     }]) 
    }.call(this), 

私のindex.html構造:

<body ng-app="App"> 
    <main ui-view=""> 
      ..contact.html ..projects.html 
    </main> 
</body> 

私の質問は次のとおりです。

私のテンプレート/コントローラーをリフレッシュせずに状態を切り替える方法

+0

あなたの質問は何ですか? –

+0

毎回テンプレート/コントローラをリフレッシュせずに状態を切り替える方法 –

答えて

0

あなたはそれをやりたいのですが、それはあなたの複雑な要件ではないデフォルト動作です。代わりに、最初のロード時にサービス/工場&を書いてフォームのモデル値を保存するだけです(依存性注入を使用して)そのデータからフォームフィールドをロードしてください。

myApp.service('formDataService', function(){ 
    var formData; 
    this.getData = function(){ 
    return formData; 
    } 
    this.setData = function(data){ 
    formData = data; 
    } 
}); 

コントローラーコードとすることができる:$scope.userは、フォームフィールドのモデルオブジェクトである

myApp.controller('ContactCtrl', function($scope, formDataService){ 
    var initialData = formDataService.getData(); 
    $scope.user = angular.copy(initialData); 
    $scope.$watch('user', function(n, o){ 
     formDataService.setData($scope.user); 
    }); 
}); 

Plunker

関連する問題