Asp.net mvc 使用angularjs导航时保持模型

Asp.net mvc 使用angularjs导航时保持模型,asp.net-mvc,angularjs,asp.net-web-api,Asp.net Mvc,Angularjs,Asp.net Web Api,我刚开始学习angularjs,我有一个问题: 我试图创建一个视图,其中包含一个带有更新按钮的实体表。当按下Upadte按钮时,我希望导航到另一个视图以编辑实体 在我的主页中,我使用它将我的不同视图加载到: <div ng-view></div> 我试图实现的目标: 有一个简单的局部视图,用于查看实体列表和 更新视图 实体列表视图加载到它的位置后,它 通过web API从同一web应用程序获取数据 控制器 它一直工作到现在 什么不起作用: 单击按钮时,将选定实体存

我刚开始学习angularjs,我有一个问题:

我试图创建一个视图,其中包含一个带有更新按钮的实体表。当按下Upadte按钮时,我希望导航到另一个视图以编辑实体

在我的主页中,我使用它将我的不同视图加载到:

<div ng-view></div>
我试图实现的目标:

  • 有一个简单的局部视图,用于查看实体列表和
    更新视图

  • 实体列表视图加载到它的位置后,它
    通过web API从同一web应用程序获取数据
    控制器

它一直工作到现在

什么不起作用:

  • 单击按钮时,将选定实体存储在
    $scope.companyEdit
    并将其加载到视图中

  • 这样,我就不必向服务器创建另一个请求来 让公司编辑,但在上重新创建角度控制器
    导航时,我丢失了数据


你怎么解决这个问题?请告诉我我的方法是否不好。

使用相同的控制器无法实现这一点

原因是,当更改视图时,我假设您正在更改状态,控制器将再次加载,并正在经历初始化过程

这意味着,
$scope.companyEdit
将没有值,并且将是未定义的,除非您在控制器中初始化该值

您需要做的是使用服务保存数据,并使用控制器访问该服务。该服务将保持价值,因为当您在同一水疗中心导航时,服务作为单身存在

将服务注入控制器并访问其中的数据

<div ng-controller="CompaniesController">
    <table id="tblCompaniesCollection">
        <thead>
            <tr>
                <th>Name</th>
 ...
            </tr>
        </thead>
        <tbody ng-repeat="Company in Companies">
            <tr>
                <td><span>{{Company.Name}}</span></td>
 ...
                <td>
                    <button type="button" ng-click="ChangeView(Company)">Go to edit</button>
                </td>
            </tr>
        </tbody>
    </table>
</div>
<div ng-controller="CompaniesController">
    <table id="tblCompanyToEdit">
        <tbody >
            <tr >
                <td>Name</td>
                <td><span>{{CompanyToEdit.Name}}</span></td>
                </tr>
    ...
        </tbody>
    </table>
</div>
$scope.ChangeView = function (Company) {

    $scope.CompanyToEdit = Company
    $location.path('/EditCompany');
};