【发布时间】:2014-05-31 01:06:53
【问题描述】:
我正在尝试通过保存发布一些数据,但除非我刷新,否则无法在浏览器中看到数据,todo.id 会立即显示,但 todo.name 不会显示
<body ng-controller="TodoCtrl">
<div ng-repeat="todo in Todos.record">
<div>{{todo.id}} : {{todo.name }}</div>
</div>
<div>
<input ng-model="todo.name" />
<button ng-click="addItem()">Add Item</button>
</div>
</body>
var app = angular.module("myApp",['ngResource']);
app.factory("Todo",function($resource){
return $resource(
"http://localhost/rest/motors/users?app_name=motors",
{},
{
query: {method: 'GET',isArray: true},
get: {method: 'GET'},
save:{method:'POST'}
}
)
})
app.controller("TodoCtrl", function ($scope, Todo) {
"use strict";
$scope.Todos = Todo.get();
$scope.addItem = function(){
Todo.save($scope.todo, function(data){
$scope.Todos.record.push(data);
$scope.todo={};
});
}
})
【问题讨论】:
-
尝试在 Todo.save 方法中添加 $scope.$apply() 以执行另一个摘要循环。
-
所以你是说添加新项目后,显示的是新项目的ID,而不是名称?您确定
data包含name属性吗?否则,请尝试在保存回调函数的末尾添加$scope.$apply(),但如果 Angular 已经为您执行此操作,则可能没有必要这样做。 -
不确定这是否与您的问题直接相关,但您的 ng-model="todo.name" 超出了您的重复范围。每次重复都会创建一个新范围
-
你的意思是这样 => Todo.save($scope.todo, function(data){ $scope.Todos.record.push(data); $scope.todo={}; }) ;$scope.$apply()
-
十年月亮:我尝试使用 $scope.$apply 但似乎不起作用,是的,新项目的 ID 很快就会显示我单击按钮,但该项目仅在页面刷新后显示.
标签: angularjs rest angularjs-ng-repeat ngresource