【问题标题】:ng-repeat doesn't auto refresh after saveng-repeat 保存后不会自动刷新
【发布时间】: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


【解决方案1】:

如果该代码示例代表您的真实代码,则引用“todo.name”的“输入”字段可能在 ng-repeat 循环之外,这可能是一个问题,因此这是在您的外部定义模型属性“Todos.record”列表。

【讨论】:

  • 嗨,是的...认为输入必须在 ng-repeat 之外,否则最终可能会出现大量重复的文本框;)
【解决方案2】:

在 api url 中添加 &fields=* 解决了这个问题。例如改变了

"http://myexample.com/rest/motors/users?app_name=motors"
 to 
"http://myexample.com/rest/motors/users?app_name=motors&fields=*"

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多