javascript - 如何使用服务将信息从一个控制器共享到另一个控制器?
问题描述
我怀疑如何在两个控制器之间共享我的数据。
我目前有两个带有两个控制器的“div”。
- PriceController 驱动程序调用 REST 服务。该服务返回一个存在于数据库中的价格矩阵并将数据(对象)加载到表中。
- 在FormController中,获取表单信息并在数据库中更新。
所需功能:
- 当您单击“编辑”按钮时,信息将加载到表单中。
- 该表单允许您编辑“价格”字段。
- 通过按下表格的“保存”按钮,它在数据库中被更新。
我做了一个我想要的例子。将数据保存在数据库中的服务已经完成,所以我没有放在示例中。
问题:
- 实现使用ng-model方便吗?如何?
- 有必要使用ngModelOptions吗?
- 如何将表单的数据发送到数据库?
- 控制器之间的连接是否正确?
- 你能给我一个想法吗?
示例应用程序
JsFiddle
app.js中的示例
angular.module("app", [])
.factory("Service", function(){
var data={}
return data;
})
.controller("FormController", function($scope, Service){
$scope.service = Service;
$scope.updateData = function(data){
//TODO: Implement logic to update database
}
})
.controller("DataController", function($scope, Service){
$scope.service = Service;
// Fake database
$scope.dataPrices = [
{
code: 'AA',
price: 111
},
{
code: 'BB',
price: 222
},
{
code: 'CC',
price: 333
}
];
$scope.editData = function(index){
$scope.service.data = $scope.dataPrices[index];
}
});
索引.html
<div ng-app="app">
<div ng-controller="FormController" >
<form name="mainForm" novalidate>
<div>
<label>Code</label>
<div>
<input
type="text"
name="code"
ng-required="true"
ng-disabled="true"
value="{{service.data.code}}"
/>
</div>
</div>
<div>
<label>Price</label>
<div>
<input
type="number"
name="price"
ng-required="true"
value="{{service.data.price}}"
/>
</div>
</div>
<div>
<button
type="submit"
ng-click="updateData(data)">
Save
</button>
</div>
</form>
</div>
<div ng-controller="DataController">
<table>
<tr>
<th>Code</th>
<th>Price</th>
<th>Action</th>
</tr>
<tr ng-repeat="dat in dataPrices">
<td>{{dat.code}}</td>
<td>{{dat.price}}</td>
<td>
<button ng-click="editData($index)">
Edit
</button>
</td>
</tr>
</table>
</div>
</div>
对不起我的英语。
谢谢你。
解决方案
对您的问题的答复:
实现使用ng-model方便吗?如何?您可以像这样使用 ng-model:
<input ... ng-model="service.data.code" />
有必要使用ngModelOptions吗?不,它不是必需的,但在某些情况下它可能有用 - https://docs.angularjs.org/api/ng/directive/ngModel
如何将表单的数据发送到数据库?您可以使用 fetch 将其发布到后端:
fetch(endpoint, Service.data).then(response => console.log(response))
控制器之间的连接是否正确?是的,使用服务是在控制器之间共享数据的最佳方法。
推荐阅读
- php - 引起:yii\base\ErrorException mkdir(): Permission denied - YII2
- opencv - 如何在opencv中获取mpeg文件格式
- c - 在嵌入式 C 编程中检查 GPIO 状态
- gitlab - 由于解包器错误,git push 不可能
- python - 如何创建包含空csv字段的dict作为None?
- python - django.db.utils.IntegrityError: (1062, "Duplicate entry '' for key 'username'")
- javascript - 如何使用边距自动 Css 角度 4 将跨度向左移动
- r - R终止时关闭windows()
- go - 读取 xls 文件返回错误“VirtualAlloc of 4710203392 bytes failed with errno=1455”
- php - 如何在我的类 test.php 中使 $_POST['count'] 成为它的属性?