0

ルートが変更されると、Angular はビュー全体を再レンダリングするようです。この例を参照してください: http://jsfiddle.net/RSHG8/1/

html:

<div class="nav">
    <a href="#/one">One</a><a href="#/two">Two</a>
</div>
<div ng-app="app" id="ng-app">
    <div ng-view=ng-view></div>
</div>

var app = angular.module('app', []);

js:

app.config(function ($routeProvider) {
    $routeProvider.when('/one', {
        template: 'Template {{template}}<br>Enter some text: <input type="text" /> then click "Two"',
        controller: 'one'
    })
        .when('/two', {
        template: 'Template {{template}}<br>Click back to view "One" to see changes undone',
        controller: 'two'
    })
        .otherwise({
        redirectTo: '/one'
    });
});

app.controller("one", function ($scope) {
    $scope.template = "One";
});

app.controller("two", function ($scope) {
    $scope.template = "Two";
});

ビューを切り替えると、ユーザーが入力したテキストは忘れられます。これは、角度のないものでも問題になります。たとえば、jQuery の展開と折りたたみのプラグイン。ユーザーが特定の数の要素を展開し、ビューを離れて戻ってきた場合、状態はすべてが折りたたまれた状態にリセットされます。

ルートが変更されたときに再レンダリングを消去するのではなく、Angular を単純な表示/非表示にすることは可能ですか?

4

1 に答える 1