ngRepeat暂时显示重复列表

时间:2015-09-24 11:57:08

标签: angularjs angularjs-directive get typescript ng-repeat

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

每当我反复打开模态,隐式调用列表的更新时,我会立即看到列表的多个副本 - 每次点击大约一个副本。然后显示的列表将自己解析为实际存储在列表中的内容。

这可能是控制器或html的问题,还是来自ngRepeat的某种副作用?

以下是html文件的片段:

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

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

来自控制器:

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();
    }
}

1 个答案:

答案 0 :(得分:0)

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

此外,在视图中,您将项目附加到名为vm的作用域上的属性,但在控制器中,您将它直接附加到此/ self。是否有更多代码将其移动到vm对象?

听起来您正在处理围绕API调用的时间问题,但如果没有看到更多代码,很难确定。