私はワードプレスサイトの角度のテーマを書こうとしています、そして、私は、一般的なwordpress/angular 'パターン'のように、functions.php
を使ってviews/partialsフォルダを指すグローバル変数を定義していますしたがって、それは経路によって参照されることができる。 functions.php
でangle config incでグローバル変数を正しく使用する方法。テスト
:
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
のプロパティで、動作します。しかし、私のテスト(カルマ、ジャスミン、ファントム)は、グローバルが環境に定義されていないため失敗します。 (また、このようにグローバル変数を直接参照することは厄介であり、DIの動きなどに逆らっています)
私はconfigクラスに `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
を変更する方法を考え出すことはできません。
私はこれを試してみた:私は、Configクラスで.localized.partials
を参照しない場合を除き
beforeEach(module(MODULE_NAME, function ($windowProvider) {
let $window = $windowProvider.$get();
$window.localized = {
partials: 'some-path/'
};
console.log("WINDOW:", $window);
}));
しかし、console.log
は実行されません - 私は、モジュール(および設定)を思わせるその前にインスタンス化されています変更する機能window
これに関するヘルプや説明は、非常に高く評価されます。
おかげ