我刚开始学习angularjs,我有一个问题:
我正在尝试使用带有更新按钮的实体表创建视图。按下Upadte按钮后,我想导航到另一个视图来编辑实体。
在我的主页面中,我用它将我的不同视图加载到:
<div ng-view></div>
我使用ASP.NET MVC为entites列表和更新表单创建部分视图。
这两个局部视图使用相同的角度控制器。
显示列表:
<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>
在ChangeView(公司)功能中,我执行以下操作:
$scope.ChangeView = function (Company) {
$scope.CompanyToEdit = Company
$location.path('/EditCompany');
};
我试图实现的目标:
有一个简单的部分视图来查看entites列表和 更新视图。
在将entites列表的视图加载到它的位置之后,它为 通过WEB API从同一Web应用程序获取数据 控制器。
到目前为止一直在努力。
什么不起作用:
当我单击按钮时,将所选实体存储在
$scope.CompanyToEdit
并将其加载到视图中。
这样我就不必再向服务器创建另一个请求了 让公司编辑,但角度控制器重新创建 导航,我丢失了数据。
你如何解决这个角度?如果我的方法不好,请告诉我。
答案 0 :(得分:0)
使用相同的控制器无法实现这一目标。
原因是在更改视图时,我假设您正在更改状态,控制器将再次加载并正在进行初始化过程。
意味着$scope.CompanyToEdit
没有值并且将是未定义的,除非您在控制器中初始化它。
您需要做什么,是使用服务来保存数据并使用控制器来访问该服务。该服务将保留价值,因为当您在同一SPA中导航时,服务以单身人士的形式存在。
将服务注入控制器并访问那里的数据。