angularjs - ngRepeat 暂时显示重复列表

标签 angularjs angularjs-directive get typescript ng-repeat

我有一个在单击按钮时弹出的模式。模态的内容是项目列表。此列表存储在 Controller 中,并由来自 GET 请求响应的一些数据填充。

每当我重复打开模式时,这隐含地调用了对列表的更新,瞬间我看到了列表的多个副本——每次点击大约一个副本。显示的列表然后自行解析为列表中实际存储的内容。

这可能是 Controller 或 html 的问题,还是 ngRepeat 的某种副作用?

以下是 html 文件的片段:

<li ng-repeat="itemin vm.items">{{item.name}}</li>

<a href="#" onclick="togglePanel('Panel')" ng-click= "vm.getItems()">View Items</a>

从 Controller :

getItems(): angular.IPromise<core.IItem> {
        var self: Controller = this;
        return this.itemDataService.getItems()
        .then(function(response: any): angular.IPromise<core.IItem> {
          self.items = response.data;
          return response;
        },
        function(response: any): angular.IPromise<core.IItem> {
          self.items = [];
          return response;
        });
    }

请询问您是否需要查看更多代码。

编辑:额外代码... onClick 被调用:

function toggleSavedSearchPanel(id)
{
    var e = document.getElementById(id);

    if (e.style.display == 'block' || e.style.display=='')
    {
        e.style.display = 'none';
    }
    else
    {
        e.style.display = 'block';
        e.focus();
    }
}

最佳答案

更多代码会有所帮助。例如,您在 a 标签上有一个 onclick 属性,加上 ng-click 事件。在不知道 onclick 函数在做什么的情况下很难说发生了什么。

此外,在 View 中,您将项目附加到名为 vm 的范围上的属性,但在您的 Controller 中,您将它直接附加到 this/self。是否有更多代码将其移动到 vm 对象?

听起来您正在处理 API 调用的计时问题,但如果不查看更多代码就很难确定。

关于angularjs - ngRepeat 暂时显示重复列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760707/

相关文章:

javascript - 带有 UI Bootstrap 指令的 ng-bind-html

angularjs - NG-init 通过函数

javascript - ng-controller 不向浏览器呈现数据

android - 访问 OKHttp 响应正文

Jquery $post 请求在 Django 中不起作用

php - 将 PHP var 从远程 PHP 脚本获取到 JQuery

javascript - 为什么 Node 应用程序中的 HTTP POST 请求在提交表单数据时需要刷新

javascript - Angular $parse 不返回本地人

angularjs - 使用 $http 拦截器取消请求?

javascript - AngularJs 空结果