我想爲wordpress網站編寫一個有角度的主題,並且我遵循使用functions.php
定義一個指向views/partials文件夾的全局變量的常見wordpress/angular'模式' ,那麼它可以被路由引用。如何正確使用角度配置公司中的全局變量。測試
在functions.php
:
wp_localize_script('appJs', 'localized',
array (
'partials' => get_stylesheet_directory_uri() . '/views'
)
);
我的角度配置類:
function AngularConfig($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/', {
templateUrl: localized.partials + '/home.html',
controller: 'HomeController'
})
.when('/projects/', {
templateUrl: localized.partials + '/projects.html',
controller: 'ProjectsController'
})
.when('/contact/', {
templateUrl: localized.partials + '/contact.html',
controller: 'ContactController'
})
.otherwise({
redirectTo: '/'
});
}
export default AngularConfig;
在運行這個工程,因爲localized
是一個全球性的,具有partials
的屬性。然而,我的測試(業力,茉莉花,phantomjs)失敗,因爲全球尚未在其環境中定義。 (另外,以這種方式直接引用全局變量是討厭的,並且違背整個DI運動等)
我想(我想)在配置類中注入`windowProvider',並從那裏獲取變量。事情是這樣的:
function AngularConfig($routeProvider, $locationProvider, $windowProvider) {
$locationProvider.html5Mode(true);
let partialsRoot = $windowProvider.$get().localized.partials;
$routeProvider
.when('/', {
templateUrl: partialsRoot + '/home.html',
controller: 'HomeController'
})
.when('/projects/', {
templateUrl: partialsRoot + '/projects.html',
controller: 'ProjectsController'
})
.when('/contact/', {
templateUrl: partialsRoot + '/contact.html',
controller: 'ContactController'
})
.otherwise({
redirectTo: '/'
});
}
export default AngularConfig;
但我不能工作,如何修改window
/windowProvider
測試啓動模塊之前。
我已經試過這樣:
beforeEach(module(MODULE_NAME, function ($windowProvider) {
let $window = $windowProvider.$get();
$window.localized = {
partials: 'some-path/'
};
console.log("WINDOW:", $window);
}));
然而,console.log
沒有得到執行,除非我沒有在配置類引用.localized.partials
- 這讓我想起了模塊(和配置)被實例化之前修改window
任何幫助或指針與此將非常感激。
感謝