客户数据:
accounts = [
Account1 = {
name: 'Dan', phone: 1775123, role: 'Client', email: 'none'
},
Account2 = {
name: 'Messy', phone: 3564576, role: 'Client', email: 'none'
},
Account3 = {
name: 'Sasha', phone: 34231234, role: 'Client', email: 'Sania@mail.ta'
}
];
DOM:
<div ng-repeat="account in accounts" >
<table>
<tr>
<td><input type="checkbox" ng-change="Toggle(account.name)"/>{{ account.name }}</td>
</tr>
</table>
</div>
我只想弄清楚在没有页面重新加载的情况下更改DOM中的数组数据的最佳方法。例如,我使用ng-repeat
指令获取了一些数据。我选择了我需要的选项并将其发送给NodeJS - &gt; MongoDB的。现在我想在不重新加载页面的情况下将这些数据放在同一个地方。
这听起来像是一个非常典型的问题,但我一直试图找到解决方案很长时间。
答案 0 :(得分:0)
只需更新控制器中的数据,角度就会更新dom。这是双向数据绑定的一个小例子,我认为这就是你想要的:
在Toggle方法中,您将放入命中数据库并更改数据的服务:
$scope.Toggle = function(idx, account){
$scope.accounts[idx].name = account.name + " Edited";
//replace above with whatever updates the account, ie, businessService.updateAccount(account);
}
答案 1 :(得分:0)
我假设您使用发布请求(即$ http.post(url,data))将数据发布到服务器和数据库。
在Angular中,所有Ajax调用都对成功方法有承诺,因此在success方法中,向服务器发出get请求以检索您的数据,即:。
$http.post(url, data)
.success(function(){
$http.get(url)
.success(function(data){
updateAccounts(data) // a function to update your accounts array
}
})
在服务器端,您的节点服务器应该监听上述获取URL的get请求,然后它应该使用回调来查询数据库中的帐户:
app.get(url, function(req, res){
// Query the database for accounts and send back result of query
res.send(200, accounts);
})
希望有所帮助!