我对如何在两个控制器之间共享数据感到怀疑。
我目前有两个带两个控制器的“ div”。
所需功能:
我举了一个我想要的例子。将数据保存到数据库中的服务已完成,因此我没有在示例中添加它。.
问题:
示例应用程序
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];
}
});
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>
请问我的英语水平。
谢谢。
答案 0 :(得分:1)
我建议您阅读这篇文章,该文章很好地解释了如何解决该问题。 https://benohead.com/angularjs-sharing-data-controllers/
另一种选择是使用本地存储,并从其他控制器进行访问。
答案 1 :(得分:1)
对您的问题的答复:
实现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))
控制器之间的连接正确吗? 是的,使用服务是在控制器之间共享数据的最佳方法。