Nicht sicher, ob ich das richtig mache. Ich habe zwei Controller. Man zieht alle Beiträge. der andere gibt mir die Zählung aller Beiträge im Mülleimer. Es funktioniert derzeit aber nur in einer Richtung. Wenn ich einen Beitrag aus dem Papierkorb rückgängig mache und ihn wieder in die Population zurücklege, ändert sich die Anzahl entsprechend der neuen Nummer. Wenn ich jedoch einen Beitrag in den Papierkorb verschiebe, wird die Zählung nicht aktualisiert.Daten zwischen Controllern in Angular binden
Hier ist mein Service:
app.service('sharedProperties', function() {
});
Hier ist meine erste Controller: (Dieser Regler liefert alle Beiträge und hat die Müll-Funktion)
app.controller('postsCtrl', function ($scope, $log, $http, $timeout, Data, $uibModal, sharedProperties) {
Data.get('posts').then(function(data){
$scope.posts = data.data;
$scope.currentPage = 1; //current page
$scope.filteredItems = $scope.posts.length; //Initially for no filter
$scope.totalItems = $scope.posts.length;
$scope.list_pages = [
{
id: '5',
name: '5'
}, {
id: '10',
name: '10'
}, {
id: '20',
name: '20'
}, {
id: '50',
name: '50'
}, {
id: '100',
name: '100'
}
];
$scope.maxSize = 5;
});
$scope.setPage = function(pageNo) {
$scope.currentPage = pageNo;
};
$scope.filter = function() {
$timeout(function() {
$scope.filteredItems = $scope.filtered.length;
}, 10);
};
$scope.sort_by = function(predicate) {
$scope.predicate = predicate;
$scope.reverse = !$scope.reverse;
};
$scope.changePostStatus = function(post){
post.approved = (post.approved=="1" ? "0" : "1");
Data.put("posts/"+post.id,{approved:post.approved}).then(function (result) {
Data.toast2(result);
});
};
$scope.changePostAnnounce = function(post){
post.announce = (post.announce=="1" ? "0" : "1");
Data.put("posts/"+post.id,{announce:post.announce}).then(function (result) {
Data.toast2(result);
});
};
$scope.trashPost = function(post){
if(confirm("Are you sure to remove the post")){
Data.delete("posts/"+post.id).then(function(result){
$scope.posts = _.without($scope.posts, _.findWhere($scope.posts, {id:post.id}));
$scope.totalItems = $scope.posts.length;
Data.toast(result);
});
}
};
$scope.open = function (p,size) {
var modalInstance = $uibModal.open({
templateUrl: 'views/postsEdit.html',
controller: 'postsEditCtrl',
size: size,
resolve: {
item: function() {
return p;
}
}
});
modalInstance.result.then(function(selectedObject) {
if(selectedObject.save == "insert"){
$scope.posts.push(selectedObject);
$scope.posts = $filter('orderBy')($scope.posts, 'id', 'reverse');
}else if(selectedObject.save == "update"){
p.title = selectedObject.title;
// p.price = selectedObject.price;
// p.stock = selectedObject.stock;
// p.packing = selectedObject.packing;
}
});
};
});
Hier ist meine zweite Controller ist: (dies Controller zählt die Posts im Papierkorb)
app.controller('postsTrashCtrl', function ($scope, $log, $http, $timeout, Data, sharedProperties) {
Data.get('trash').then(function(data){
$scope.trash = data.data;
$scope.totalTrashItems = $scope.trash.length;
});
});
Im Controller 1 die Funktion trashPost auf ist, wo ich versuche, totalTrashItems von Controller 2
zu aktualisieren Ich weiß, dass es etwas Kleines ist, das ich vermisse.
UPDATE
der HTML-Code, den Controller und Variable:
<div class="container">
<div class="row" align="center">
<div class="stats" ng-controller="postsTrashCtrl"><i class="fa fa-thumb-tack"></i> Total Posts (<span class="attendStat">{{ totalItems }}</span>)<span class="seperator"> | </span><i class="fa fa-trash-o"></i> <a href="#/trash" id="trashCan" class="trashCan">Trash</a> (<span class="attendStat">{{totalTrashItems}}</span>)</div>
</div>
klingen wie Ihr Müll-Controller kann in Ihrer Post Controller gewickelt ist –
ich Angular bin hier und weiß nicht, was das bedeutet oder wie es – Jason
lösen kann Ihr Beitrag Ihre HTML –