当前位置: 首页 > 面试题库 >

当ajax调用更改其值时,AngularJS中的ng-repeat列表不会更新

景同
2023-03-14
问题内容

我很困惑。为什么当ajax调用更改其值时,我的ng-repeat为什么不刷新?我在这里看到过很多问答,但是没有人谈论ajax调用。

HTML:

<div class="row" ng-controller="EntryCtrl">
    <div id="treeview" class="col-xs-4 col-sm-4 col-md-4 col-lg-4">
        <ul>
            <li ng-repeat="root in rootEntry">{{root.Name}}</li>
        </ul>
    </div>
</div>

JS:

function EntryCtrl ($scope, $http) {
    $scope.rootEntry = [];
    $http.get('read/root').success(function(root) {
        $scope.rootEntry = root;
        console.log($scope.rootEntry);
    });
}

控制台确实记录了服务器返回的阵列。但是html中的列表从未更新。如果使用$scope.$apply$digest则会发生有关错误。

控制台输出

[Object]
    0: Object
        Attributes: null
        Id: "534580464aac494e24000001"
        Name: "Registry"
        Path: ""
        __proto__: Object
        length: 1
    __proto__: Array[0]

这就是root服务器返回的结构。会是数据类型的问题吗?因为它Object不是Array。我将Golang用作服务器,并用于json.Marshal()打包来自MongoDB的数据。

更新资料

function EntryCtrl ($scope, $http) {
    $scope.rootEntry = [];
    $http.get('read/root').success(function(root) {
        $scope.rootEntry = root;
        console.log($scope.rootEntry);
    });
    console.log($scope.rootEntry);
}

后者的输出是[]。可能是由于$ http的异步引起的,请问原因是什么?

最后

我知道为什么。我使用了一个名为的插件jsTree,它将对节点进行一些修饰,因此插入的节点将被覆盖。

谢谢你们。


问题答案:

我已经测试了您的代码,正如tymeJV所说,您的实现没有问题,我建议您检查控制台窗口中是否存在一些可能的错误。

例:

function EntryCtrl ($scope, $http) {
    $scope.rootEntry = [];
    $http.get('https://api.github.com/users/mralexgray/repos').success(function(root) {
        $scope.rootEntry = root;
        console.log($scope.rootEntry);
    });
}

实时示例:http :
//plnkr.co/edit/Grlgfob6tjE63JizWdCD?p=preview



 类似资料:
  • 问题内容: 我有一个ng-repeat,它在更改正在使用的数组中的数据时不会更新。我已经研究了一段时间,但似乎没有任何效果。最初,当页面加载时,ng- repeat显示数据集的第一页,在获取新数据(下一页)并使用该数据设置该数组时,ng- repeat不会注意到更改,并且永远不会填充更新的数组。如果有人可以在正确的方向上指导我,将不胜感激。 }]); 问题答案: 尝试将tbody包装在div中,但

  • 问题内容: 这是我的HTML: 当我在框中输入内容时,该模型会通过2向绑定机制进行更新。甜。 但是, 当我通过JQuery执行此操作时… 它不会更新模型。为什么? 问题答案: Angular不知道这种变化。为此,您应该在以下位置致电或进行更改: 看到这个以更好地了解 脏检查 更新 :这是一个示例

  • 问题内容: 我有两个控制器,并使用app.factory函数在它们之间共享数据。 单击链接时,第一个控制器在模型数组(pluginsDisplayed)中添加一个小部件。将小部件推入数组,并将此更改反映到视图中(使用ng- repeat显示数组内容): 该小部件基于三个指令k2plugin,remove和resize建立。remove指令将范围添加到k2plugin指令的模板。单击该范围时,将使用

  • 问题内容: 这是我不工作的演示 模型保持不变。如何同步?请注意,数据结构很重要。 问题答案: 的结合将评估在当前范围的表达。作为创建一个子范围,这意味着将寻找一个命名属性的子范畴。在您的示例中,我们希望它在 父 范围内查找属性,该属性的别名为。 这是设计使然,可以通过引用表达式中的父范围来避免这种情况。 工作演示 代码(注意输入元素上的绑定已更改): 当您使用Angular 1.3的Beta版时,

  • 问题内容: 我想基于变量在Angular.js ng-repeat上显示不同的limitTo数字。 这是我的代码: 并在控制器中: 我只能假设有一种基于搜索输入来更改limitTo的更优雅的方法,我只是不知道要寻找什么。 您可以在http://happinesshunt.co上看到此代码的实现。 PS:我是新来的,而且是开发的新手,所以,如果未正确提出问题,请原谅我。 谢谢你! 问题答案: 这可能

  • 问题内容: 我正在通过ng-repeat循环渲染数据。而且我希望它在更新数组时进行更新。从我阅读的内容来看,这应该会自动发生,但是这是行不通的。那我在做什么错? 的HTML: 控制器(此功能通过ng-click在按钮上触发): Console.log显示该数组已正确更新,但是我视图中的表未更改。我不知道我在做什么错。 问题答案: 那是因为您在method中更改了数组引用。 为了避免这种情况,我们使