Мне нужно передать параметр маршрута на сервер, отвечающий шаблоном, поэтому я пытаюсь использовать templateProvider
для нескольких статей/других документов переполнения стека.Угловой шаблон ui-routerProvider никогда не вызывался
У меня нет ошибок javascript, но следующий метод templateProvider
никогда не выполняется. Когда свойство templateUrl
не закомментировано, этот маршрут работает нормально.
$stateProvider
.state('org.contacts.add', {
url: '/add',
views: {
'[email protected]': {
// 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;
});
}
Это помогло мне понять, что, выбирая '$ route' и используя' $ stateParams', я, по крайней мере, получаю маршрут для применения и контроллер для загрузки. Теперь я вижу, что почти все работает - запрос http сделан, параметры правы, но ответ HTML никогда не загружается в мое представление. Я обновляю свой вопрос с помощью нового кода. – helion3
Возвращая обещание http непосредственно, просто вводит '[object Object]' в представление. – helion3
Yay, решил. Если посмотреть на источник углового ui-router, это то, что они использовали: 'return $ http.get (url, {cache: $ templateCache}), затем (function (response) {return response.data;});' – helion3