我有一个按钮点击弹出的模态。模态的内容是项目列表。此列表存储在控制器中,并由来自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();
}
}
答案 0 :(得分:0)
更多代码会有所帮助。例如,a标签上有onclick属性,加上ng-click事件。很难说在不知道onclick功能正在做什么的情况下会发生什么。
此外,在视图中,您将项目附加到名为vm的作用域上的属性,但在控制器中,您将它直接附加到此/ self。是否有更多代码将其移动到vm对象?
听起来您正在处理围绕API调用的时间问题,但如果没有看到更多代码,很难确定。