如何在不使用Angular和Node JS重新加载页面的情况下更改数据

时间:2014-05-11 14:57:46

标签: javascript node.js angularjs

客户数据:

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的。现在我想在不重新加载页面的情况下将这些数据放在同一个地方。

这听起来像是一个非常典型的问题,但我一直试图找到解决方案很长时间。

2 个答案:

答案 0 :(得分:0)

只需更新控制器中的数据,角度就会更新dom。这是双向数据绑定的一个小例子,我认为这就是你想要的:

Plunker example

在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);
})

希望有所帮助!