हालांकि सवाल आम तौर पर उत्तर दिया गया है, यहाँ एक छोटे से अतिरिक्त ठोस प्रश्न में प्रयोग किया जाता उदाहरण को लक्षित है अपने partials की 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'
})
;
}]);
मेरी राय में, इस कई लाभ हैं:
- आप अपने दृश्यों ले जाते हैं, आप केवल
- एक ही स्थान पर अपने कोड को अद्यतन करने के लिए अपने partials गहरा अपनी परियोजना लेआउट के भीतर नेस्ट रहे हैं की जरूरत है, "templateBaseUrl" पूरे पथ के रूप में के रूप में ज्यादा शोर का कारण नहीं है
- तुम भी सापेक्ष और निरपेक्ष पथ
- An answer to a similar question के बीच बदल सकता हैं एचटीएमएल के आधार तत्व के प्रयोग प्रत्येक templateUrl करने के लिए एक baseurl prepending की आवश्यकता को दूर करने के लिए पता चलता है। लेकिन इसने वेबसाइट पर अन्य सभी संसाधनों को भी प्रभावित किया। टेम्पलेट्स के लिए केवल बेस यूआरएल को कॉन्फ़िगर करने के लिए कोई दुष्प्रभाव नहीं है
आम तौर पर, मैं इस समाधान का उपयोग ऊपर की तरह हार्ड कोड वाले मूल्य के साथ नहीं करता। यह दिखाने के लिए केवल एक उदाहरण है कि सबसे सरल तरीके से क्या करना है।
// 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);
अपने अनुप्रयोग के आसपास अपने सर्वर पर, मूल्य app.js के बाहर अपने इंडेक्स फ़ाइल में कॉपी परिभाषित करते हैं, और उत्पन्न करने के लिए आवश्यक pathes सर्वर साइड सक्षम होने के लिए
इस उत्तर को देखें: http://stackoverflow.com/questions/17011616/using-a-relative-path-for-a-service-call-in-angularjs/17112017#17112017 मुझे लगता है कि यह एक बेहतर समाधान है। –