更改包含的页面和URL,而无需在AngularJS中重新初始化控制器

时间:2013-11-13 21:56:53

标签: javascript jquery angularjs

我正在使用AngularJS制作应用程序,并希望能够在“制表符”之间切换,并在面板/容器中来回交换不同的“部分”或html模板(使用ngInclude)。

这是我的模板,它包含在ngView

<div class="row">
    <div class="col-md-3">
        <div class="list-group" data-fixed-sidebar data-nav-control>
            <a href="#/analyze/option1" class="list-group-item" data-tab-route="/analyze/option1.*" >Analyze Option 1</a>
            <a href="#/analyze/option2" class="list-group-item" data-tab-route="/analyze/option2.*">Analyze Option 2</a>
            <a href="#/analyze/option3" class="list-group-item" data-tab-route="/analyze/option3.*">Analyze Option 3</a>
            <a href="#/analyze/option4" class="list-group-item" data-tab-route="/analyze/option4.*">Analyze Option 4</a>
        </div>
    </div>
    <div class="col-md-9">
        <div class="panel panel-default">
            <div class="panel-body">
                <div ng-include="child"></div>
            </div>
        </div>
    </div>
</div>

问题是,当我点击其中一个链接(例如,路由到#/analyze/option1的第一个链接)时,它将重新加载我的控制器并忘记它的当前状态。我正在使用$route$routeProvider,并且更喜欢使用此模块的解决方案。

1 个答案:

答案 0 :(得分:1)

控制器是meant to be ephemeral。在我看来,正确的方法(TM)就是将必要的状态放在an service中,它以单例方式初始化并在路由更改之间保持状态。