Я не знаком с функцией JavaScript Promises.Javascript Promises on Angular Controller
В настоящее время у меня есть этот код на моем углового контроллере
$http.get('pages/about.html').then(function(response) {
var raw_html = response.data;
$scope.aboutHTML = raw_html.replace(/</g,"<");
});
Я хочу, чтобы переписать код так, что я мог сделать что-то вроде этого
$scope.indexHTML = getHTML('pages/index.html');
$scope.aboutHTML = getHTML('pages/about.html');
...
с функцией, как это
function getHTML(url){
$http.get(url).then(function(response) {
var raw_html = response.data;
return = raw_html.replace(/</g,"<");
});
}
Как правильно написать код для функции выше?
[Update # 1]
Временное решение по @charlietfl
function getHTML(url){
// return the promise
return $http.get(url).then(function(response) {
var raw_html = response.data.replace(/</g,"<");
return raw_html;
});
}
getHTML('pages/index.html').then(function(raw_html){
$scope.indexHTML = raw_html;
});
Я хочу, чтобы написать эту функцию, чтобы уменьшить ручную работу, с таким образом я все еще нужно записать $ рамки. {page} для каждой страницы, чтобы кто-нибудь знал лучший способ?
[Update # 2]
Решение по @joeytwiddle
function getHTML(url){
// return the promise
return $http.get(url).then(function(response) {
var raw_html = response.data.replace(/</g,"<");
return raw_html;
});
}
getHTML('pages/index.html').then(function(raw_html){
$scope.indexHTML = raw_html;
});
Если вы используете * угловой ui router *, есть * чистый * способ достичь этого с помощью 'resolve'. Если вы используете маршрутизатор ui, то проверьте это: http://bguiz.github.io/js-standards/angularjs/resolving-promises-for-a-controller/ –