我正在制作一个包含大约200个列表项目(员工)的目录应用程序。该应用程序使用ng-repeat按预期工作,但是,加载很慢。我切换到收集重复利用的速度提升,但我越来越奇怪的行为,我无法弄清楚。
列表项正在渲染正确,按字母顺序添加成功的类别标题。问题是,每个列表项都有一个ng-click属性,打开一个$ ionicModal。每个项目的模式打开,但加载的数据不正确。
当模式打开时,它从页面底部开始 - 在屏幕中间动画之前,我可以看到内容半秒。开始时,加载的数据是正确的。当它动画时,它切换到另一个员工数据。我似乎无法弄清楚为什么。我是新来的角/离子,所以任何指针会很好。谢谢!
编辑 - 出于好奇,我添加了第二个ng-controller="ModalCtrl" ng-click="openModal();"
作为一个按钮。单击通常的元素 - 打开错误的员工模式。点击新创建的按钮,然后创建两个模式(彼此堆叠),并与正确的员工一起使用。删除任何一个实例到ng-controller或ng-click都会让我回到原来的状态,只有一个不正确的数据模式。为什么是这样?为什么添加第二个ng-click会纠正问题(尽管有两个模态)?
编辑 - 这是一个codepen样品(简单化了一个链接,但证明了我的问题:http://codepen.io/anon/pen/zijFv?editors=101
我的HTML看起来像这样:
<div class="list">
<a class="item my-item"
collection-repeat="row in contacts"
collection-item-height="getItemHeight(row)"
collection-item-width="'100%'"
ng-class="{'item-divider': row.isLetter}">
<!-- ADDED BUTTON SEE EDIT COMMENT ABOVE -->
<button ng-if="!row.isLetter" ng-controller="ModalCtrl" ng-click="openModal();">Click</button>
<img ng-controller="ModalCtrl" ng-click="modal.show()" ng-if="!row.isLetter" ng-src="data:image/jpeg;base64,{{row.image}}">
<h2>{{row.title || (row.firstname+' '+row.lastname)}}</h2>
<p ng-if="!row.isLetter"><em>{{row.jobtitle}}</em></p>
</a>
</div>
我的HTML模式是这样的:
<header class="bar bar-header bar-lsi">
<h1 class="title">Contact Information</h1>
<div class="button button-clear" ng-click="closeModal()">
<span class="icon ion-close"></span>
</div>
</header>
<ion-content has-header="true" style="margin-top: 0px !important;">
<div class="list card" style="border-radius: 0px !important;">
<div class="item item-avatar item-text-wrap">
<img ng-src="data:image/jpeg;base64,{{row.image}}">
<h2>{{row.firstname}} {{row.lastname}}</h2>
<p>{{row.jobtitle}}</p>
</div>
<a href="tel:{{row.phone}}" class="item item-icon-left">
<i class="icon ion-iphone"></i>
{{row.phone}}
</a>
<a href="mailto:{{row.email}}" class="item item-icon-left">
<i class="icon ion-email"></i>
{{row.email}}
</a>
</div>
</ion-content>
然后,我有我的基本控制器:
.controller('ModalCtrl', function($scope, $ionicModal) {
$ionicModal.fromTemplateUrl('my-modal.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.modal = modal;
});
$scope.openModal = function() {
$scope.modal.show();
};
$scope.closeModal = function() {
$scope.modal.hide();
};
$scope.$on('$destroy', function() {
$scope.modal.remove();
});
})
您的模态模板是否包裹在中?它应该是如果没有。这将建立第二种观点,不应该干扰列表中的主要观点。 –
2014-10-28 18:28:29
@JeremyWilken感谢您的回复 - [我已经做了一个非常愚蠢的问题](http://codepen.io/anon/pen/zijFv?editors=101)。我还会将此链接添加到我的原始发布中。 – Justin 2014-10-28 18:32:39