雖然問題通常被回答,這裏有一個小加成靶向在問題中使用的具體的例子:
如何使用的角度恆定定義你的泛音的的baseUrl(或定義表示服務器值,使它們可用於配置其它常量):
// file: app.js
'use strict';
/* App Module */
angular.module('myApp', [])
// define the templateBaseUrl
.constant('templateBaseUrl', 'themes/angular/partials/');
// use it in configuration
.config(['$routeProvider','templateBaseUrl', function($routeProvider,templateBaseUrl) {
$routeProvider
.when('/posts', {
templateUrl : templateBaseUrl + 'post-list.html',
controller : PostListCtrl
})
.when('/posts/:postId-:slug', {
templateUrl : templateBaseUrl + 'post-view.html',
controller : PostViewCtrl
})
.when('/about', {
templateUrl : templateBaseUrl + 'about.html',
controller : AboutPageCtrl
})
.when('/contact', {
templateUrl : templateBaseUrl + 'contact.html',
controller : ContactPageCtrl
})
.otherwise({
redirectTo: '/posts'
})
;
}]);
在我看來,這有幾個好處:
- 如果你移動你的意見,你只需要在一個單一的位置更新代碼
- 如果你的諧音被深度嵌套項目佈局中,「templateBaseUrl」不會造成儘可能大的噪音整個路徑
- 你甚至可以在相對路徑和絕對路徑之間切換
- An answer to a similar question建議使用html的基本元素來刪除對每個templateUrl預先添加baseUrl的需要。但是這也影響了網站上的所有其他資源。僅配置模板的基本url沒有副作用
通常,我不使用此解決方案,並使用上面的硬編碼值。這只是一個例子,以最簡單的方式展示要做什麼。爲了能夠複製左右你的應用服務器上,定義值app.js之外,在你的索引文件並生成必要的pathes服務器端:
// file: index.php
<?php
// only depends on your project layout
$angularPartialsBaseUrl = 'themes/angular/partials/';
// this will change when you move the app around on the server
$themeBaseUrl = $_SERVER['REQUEST_URI'] . 'themes/angular';
?><!DOCTYPE html>
<html ng-app="myApp">
<head>
<title>Yii Blog Demo</title>
<script>
var myNS = myNS || {};
myNS.appConfig = myNS.appConfig || {};
myNS.appConfig.templateBaseUrl = '<?php echo $angularPartialsBaseUrl; ?>';
</script>
<script src="<?php echo $themeBaseUrl; ?>/js/vendor/angular/angular.js"></script>
<script src="<?php echo $themeBaseUrl; ?>/js/app.js"></script>
</head>
[...]
而且在app.js:
// file: app.js
'use strict';
/* App Module */
angular.module('myApp', [])
// define the templateBaseUrl using external appConfig
.constant('templateBaseUrl', myNS.appConfig.templateBaseUrl);
來源
2012-10-19 20:22:39
ben
看看這個答案︰http://stackoverflow.com/questions/17011616/using-a-relative-path-for-a-service-call-in-angularjs/17112017#17112017我認爲這是一個更好的解決方案。 –