Reputation: 3
When I remove items from items list. It takes time to refresh on the browser. I am unable to found any alternate of $apply(). It's a callback function when call the component object from outside the component.
import template from './itemListItems.html';
export const name = 'itemListItems';
export const itemListItems = {
template,
bindings: {
listItems: '<',
addNewItem: '&',
editItem: '&',
},
controller: class ItemListItemsController {
// @ngInject
constructor(page) {
this.page = page;
}
removeItem(indx) {
var func = function (button) {
if (button === 1) {
this.listItems.splice(indx, 1);// After removing itemlist,
it takes few seconds to refresh on browser.
}
};
navigator.notification.confirm(
'Are you sure you want to remove this item?',
func.bind(this),
'Confirm Delete',
['Confirm', 'Cancel']
);
}
}
};
I have issue on this line. this.listItems.splice(indx, 1); After removing itemlist, it takes few seconds to refresh on browser. Previously in directove mode, I was using $scope.$apply(). But in component, $apply is no more available. What is the solution please?
Upvotes: 0
Views: 491
Reputation: 390
No need to refresh the page. If you already initialize the array in the parent component, it should update automatically, since the array is a reference type.
The better way, is to use '&' binding, like your 'addNewItem' and 'editItem'.
It should look like this:
export const itemListItems = {
template,
bindings: {
listItems: '<',
addNewItem: '&',
editItem: '&',
onRemove:'&',
},
controller: class ItemListItemsController {
// @ngInject
constructor(page) {
this.page = page;
}
removeItem(indx) {
var func = function (button) {
if (button === 1) {
this.listItems.splice(indx, 1);
this.onRemove(indx);
}
};
navigator.notification.confirm(
'Are you sure you want to remove this item?',
func.bind(this),
'Confirm Delete',
['Confirm', 'Cancel']
);
}
}
};
Parent- HTML:
<item-list-items list-items="yourlist" on-remove="removeFromList($event)"></item-list-items>
Parent-controller js:
//...
$scope.removeFromList = function (index) {
$scope.yourlist.splice(index, 1)
}
//...
Upvotes: 0