Angularjs 从未调用Angular ui路由器模板提供程序
我需要将一个路由参数传递给使用模板进行响应的服务器,因此我正试图为几篇文章/其他堆栈溢出文档使用Angularjs 从未调用Angular ui路由器模板提供程序,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我需要将一个路由参数传递给使用模板进行响应的服务器,因此我正试图为几篇文章/其他堆栈溢出文档使用templateProvider 我没有收到任何javascript错误,但是下面的templateProvider方法从未执行过。当templateUrl属性未被注释掉时,此路由工作正常 $stateProvider .state('org.contacts.add', { url: '/add', views: { 'org@': { // templateUrl: '
templateProvider
我没有收到任何javascript错误,但是下面的templateProvider
方法从未执行过。当templateUrl
属性未被注释掉时,此路由工作正常
$stateProvider
.state('org.contacts.add', {
url: '/add',
views: {
'org@': {
// templateUrl: '/templates/issues/add',
controller: 'ContactsAddController',
templateProvider: function($route, $templateCache, $http) {
var url = '/templates/' + $route.current.params.org + '/contacts/add';
$http.get(url, {cache: $templateCache}).then(function(html){
return html;
});
}]
}
}
})
经过一些实验,似乎是$route
引起了麻烦。取出它并使用$stateParams
至少触发此代码/控制器
然而,虽然我看到ajax调用启动和正确的html响应,但它从未加载到视图中
templateProvider: function ($stateParams, $http, $templateCache) {
var url = '/templates/contacts/add';
$http.get(url, {cache: $templateCache}).then(function(html){
return html;
});
}
我猜您需要返回一个
$promise
才能使其生效。请查看在上使用的示例:
$stateProvider.state('contacts'){
templateProvider:函数($timeout,$stateParams){
返回$timeout(函数(){
返回'+$stateParams.contactId+''
}, 100);
}
})
注意以
return$timeout(…
开头的行。您是否尝试返回通过执行$http.get()创建的$promise
?这帮助我认识到,通过取出$route
,并使用$stateparms
,我至少得到了应用的路由和要加载的控制器。现在我看到几乎所有工作都起作用了-http请求已发出,参数是正确的,但HTML响应从未加载到我的视图中。我将用直接返回http承诺的新代码只是将[object object]
注入到视图中。耶,解决了它。查看angular ui路由器本身的源代码,他们使用的是:return$http.get(url,{cache:$templateCache})。然后(函数(response){return response.data;});
$stateProvider.state('contacts', {
templateProvider: function ($timeout, $stateParams) {
return $timeout(function () {
return '<h1>' + $stateParams.contactId + '</h1>'
}, 100);
}
})