1

我想构建一个有 2 个选项卡的应用程序,一个有一个表单,另一个选项卡用于查看表单中填写的数据。我有一个导航,有 2 个链接,它们正在改变一个 ng-view div。我的问题是每当我点击评论链接时,它都会重置我在表格中填写的所有数据。控制器js:

var MainApp = angular.module("MainApp",['ngRoute']);
   function appRouteConfig($routeProvider){
    $routeProvider.
        when('/',{
            controller: 'MainCtrl',
            templateUrl: 'add.html',
        }).
        when('/review',{
            controller: 'MainCtrl',
            templateUrl: 'review.html',
        }).
        otherwise({
            redirectTo: '/'
        });
}
var MainCtrl = MainApp.controller("MainCtrl", function($scope) {
    $scope.campaign = {cName:''};
});

一个表单输入例如:

<tr> 
    <td>Campaign Name</td>
    <td><input type="text" id="cName" ng-model='campaign.cName' /></td>
</tr>
<tr>

当我将视图从 add.html(表单所在的位置)更改为 review.html 时,表单中的所有数据都会重置,因此我的评论页面上没有显示任何数据,当我切换回 add.html 视图时,所有输入为空白。

当我在视图之间切换时,有没有办法可以保留数据?

4

2 回答 2

0

在上面的示例中,campaign.cName 绑定到 $scope,它通过控制器实例化,因此在视图之间切换时会丢失。使用活动对象创建服务,并将服务注入控制器。绑定到服务对象将在视图/控制器之间持久化数据。

于 2015-02-11T15:55:57.090 回答
0

如果您的意思是浏览器选项卡,那么我建议您查看会话/本地存储,但如果您的意思是在两个视图之间维护数据,那么您将创建一个单独的服务,两个视图(又名控制器)都可以访问。视图加载时会创建一个新的控制器实例,这就是您丢失数据的原因。

Egghead 有关于所有角度的很棒的教程

于 2015-02-10T17:02:16.960 回答