AngularJS ng在插入数据库后重复不更新
我是安格拉斯的新手。我整晚都在忙这个。我有一个表单,我希望表在单击SUBMIT后添加新行。表单工作正常,并将文档添加到mongodb中,但在刷新页面之前,我无法看到带有绑定的表上的更新 我错过了什么?我看到了使用PUSH的例子,但这似乎只适用于一维数组 ANGULARJSAngularJS ng在插入数据库后重复不更新,angularjs,angularjs-scope,angularjs-ng-repeat,Angularjs,Angularjs Scope,Angularjs Ng Repeat,我是安格拉斯的新手。我整晚都在忙这个。我有一个表单,我希望表在单击SUBMIT后添加新行。表单工作正常,并将文档添加到mongodb中,但在刷新页面之前,我无法看到带有绑定的表上的更新 我错过了什么?我看到了使用PUSH的例子,但这似乎只适用于一维数组 ANGULARJS app.factory('SiteFactory', function($resource) { return $resource('/api/sites/:id',{ id:'@_id' }); }); app.con
app.factory('SiteFactory', function($resource) {
return $resource('/api/sites/:id',{ id:'@_id' });
});
app.controller('SiteListController', function($scope, $location, SiteFactory) {
// GET LIST OF SITES
var sites = SiteFactory.query();
$scope.sites = sites;
$scope.createSite = function () {
// validate data passed
var domain = $scope.domain.trim();
if (!domain.length) {
return;
}
// POST to API
var newSite = new SiteFactory();
newSite.domain = domain;
newSite.created = new Date();
newSite.$save();
console.log($scope.sites);
$scope.sites = SiteFactory.query();
console.log($scope.sites);
};
HTML
<form ng-controller="SiteListController">
<input type="text" ng-model="domain">
<button type="button" ng-click="createSite()">SUBMIT</button>
</form>
...
<tbody>
<tr ng-repeat="site in sites | orderBy:'domain'">
<td>{{site.domain}}</td>
<td>{{site.created}}</td>
</tr>
</tbody>
...
之后:
[$promise: Object, $resolved: false]
0: f
1: f
2: f
$promise: Object
$resolved: true
length: 3
__proto__: Array[0]
EXAMPLE:
0: f
_id: "53d21d42f9406200001eddc6"
created: "2014-07-25T09:02:58.215Z"
domain: "originaldata1"
1: f
_id: "53d21d42f9406200001eddc7"
created: "2014-07-25T09:02:58.215Z"
domain: "originaldata2"
2: f
_id: "53d21d42f9406200001eddc8"
created: "2014-07-25T09:12:58.215Z"
domain: "newdata2"
我试过了。它不起作用。刷新页面后,我可以在表中看到新项。DOM没有更新。请将这一行添加到$scope.createSite console.log($scope.sites)中,并告诉我您得到了什么。我将console.log($scope.sites)输出添加到上面的原始问题中。@KyleAnderson您的mongodb返回对象而不是数组,这样您就可以用$scope.sites=SiteFactory.query()替换“push”行;或者将mongodb配置为返回数组,而不是对象$scope.sites=SiteFactory.query();不起作用。我认为角度资源是使它成为物体的原因。API正在返回一个JSON数组。
[$promise: Object, $resolved: false]
0: f
1: f
2: f
$promise: Object
$resolved: true
length: 3
__proto__: Array[0]
EXAMPLE:
0: f
_id: "53d21d42f9406200001eddc6"
created: "2014-07-25T09:02:58.215Z"
domain: "originaldata1"
1: f
_id: "53d21d42f9406200001eddc7"
created: "2014-07-25T09:02:58.215Z"
domain: "originaldata2"
2: f
_id: "53d21d42f9406200001eddc8"
created: "2014-07-25T09:12:58.215Z"
domain: "newdata2"
$scope.createSite = function () {
// validate data passed
var domain = $scope.domain.trim();
if (!domain.length) {
return;
}
// POST to API
var newSite = new SiteFactory();
newSite.domain = domain;
newSite.created = new Date();
newSite.$save();
//please add new site to arrays of sites
$scope.sites.push(newSite);
};