AngularJS 1.2では、ルートとコントローラを動的にロードするためのコードがありますが、うまく動作します。私はAngularJS 1.6にアップグレードしたいが、今や私のダイナミクスはもう働かない。AngularJS 1.2から1.6への動的ルートを変換できません
これは、JSファイルをロードし、ルート再計算するために私の古いコードである(私は妥当性のいくつかの検証を持っているように簡略化ビットを、これが基本です):ルックスをロードされている
moduleApp.config(function ($routeProvider, $controllerProvider) {
moduleApp.controllerProvider = $controllerProvider.register;
moduleApp.routeProvider = $routeProvider;
$routeProvider.when('/', {
templateUrl: 'startpage.html',
controller: 'startpageController'
})
.otherwise({
resolve: {
deps: function($q, $rootScope, $location) {
var deferred = $q.defer();
var modulename = $location.path().split("/")[1];
if (modulename !== null) {
// Load the JS using https://github.com/ded/script.js (Old but it works :)
$script(modulename + ".js", function() {
$rootScope.$apply(function() {
$rootScope.$broadcast('$locationChangeSuccess', $location.path(), $location.path());
});
});
}
return deferred.promise;
}
}
});
});
そして、JSファイル
moduleApp.routeProvider.
when('/FirstModule', {
templateUrl: 'FirstModule.html',
caseInsensitiveMatch: true
});
moduleApp.controllerProvider('firstModuleController', function ($scope) {
});
この場合も、1.2ではうまくいきますが、1.6でルートを適用するともうこのように動作しないと思います。だから私は$rootScope
を使用して、これを再び機能させるために、関数内で何を変更する必要がありますか?それとももっと変える必要がありますか?場合、何?
このコードでPlunkerを作成しました。 index.html
で1.2.16へ
変更AngularJSバージョン、それは1.2で動作することを確認するために(また、唯一の#
代わり#!
のようにリンクしてhashbangを変更することを忘れないでください)。それを1.6に戻してください。もう動作しません。
"does not work"を定義してください。 –
私は、Plunkerの "First module"リンクをクリックします。ルートの 'otherwise'部分が呼び出され、FirstModule.jsがロードされます。ただし、モジュールの内容は決して表示されません。 – GTHvidsten