我是角色的新手。
我有这个模块
var uhuhapp = angular.module('uhuhapp',
['ngRoute','textAngular','ui.bootstrap',
'ngAnimate','ngCookies','720kb.socialshare']);
uhuhapp.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'folders',
controller: 'FoldersController',
})
.when('/folder/:id', {
templateUrl: 'documents',
controller: 'DocumentsController',
})
.when('/documents', {
templateUrl: 'documents',
controller: 'DocumentsController',
})
.when('/newdocument', {
templateUrl: 'document',
controller: 'NewDocumentController',
})
.otherwise({
redirectTo: '/'
});
});
好吧,如果我在“/ newdocument”中创建一个新项目,当我导航到另一个路径时,例如“/ documents”,则没有在ng-repeat中显示新项目,我必须重新加载。 / p>
“/ newdocument”的控制器:
uhuhapp.controller('NewDocumentController',
['$scope','$http','folderService','documentService',
function($scope, $http, folderService, documentService){
folderService.success(function(folders){
$scope.folders = folders;
});
$scope.newDocumentData = {};
$scope.createDocument = function(){
$http.post('/api/documents', $scope.newDocumentData)
.success(function(document) {
$scope.newDocumentData = document;
})
.error(function(document) {
console.log('Error:' + document);
});
};
$scope.updateDocument = function(id){
$http.put('/api/documents/' + id, $scope.newDocumentData)
.success(function(document) {
$scope.newDocumentData = document;
})
.error(function(document) {
console.log('Error:' + document);
});
};
}]);
和/ documents的控制器:
uhuhapp.controller('DocumentsController',
['$http','$scope','documentService', '$routeParams','$rootScope',
function($http, $scope, documentService, $routeParams,$rootScope){
documentService.success(function(documents){
$scope.documents = documents;
});
}]);
当我在数据库中创建一个新项目并导航到另一个路径(例如“/ documents”)时,我需要做什么来升级控制器中的数据(例如“DocumentsController”)?
我在两个控制器“documentService”中使用相同的服务:
uhuhapp.factory('documentService',['$http',function($http){
return $http.get('/api/documents')
.success(function(data){
return data;
})
.error(function(err){
return err;
});
}]);
我看到有关摘要,应用,观看和解决承诺的内容,但我不知道如何在我的应用中使用它们。
谢谢。
答案 0 :(得分:0)
因此,当您返回/documents
时,您的服务只运行一次。我在其中一个应用上遇到类似问题。尝试侦听routeChangeSuccess事件
$rootScope.$on('$routeChangeSuccess', function(event, next, current)
{
documentService.success(function(documents)
{
$scope.documents = documents;
});
});
您需要在控制器的依赖项中包含$rootScope
。另一种方法是设置broadcast
事件,您可以监听自定义事件,如:
$rootScope.$broadcast('reloadDocuments');
// - 广播您的自定义事件
&安培;
$scope.$on('reloadDocuments', function(){...});
// - 听取您的活动,并在功能中运行documentService
电话
答案 1 :(得分:0)
每次进入文档视图时都可以通过解决方法来解决这个问题
.when('/documents', {
templateUrl: 'documents',
controller: 'DocumentsController',
resolve:{
document: function(documentService){
return documentService.success(function(documents)
{
return documents;
});
}
}
})
并在您的控制器中
uhuhapp.controller('DocumentsController',
['$http','$scope','documentService', 'document', '$routeParams','$rootScope',
function($http, $scope, documentService,document, $routeParams,$rootScope){
$scope.documents = document;
}]);
如果在服务中你的$ http.get文件的缓存为true,则将其变为false
好的,在你的控制器中尝试这个,看看来自呼叫的是否有任何缓存。
var cache = $cacheFactory.get('$http');
var get = cache.get('/api/documents');
console.log(get);