我有一个在单击按钮时弹出的模式。模态的内容是项目列表。此列表存储在 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/