1
AngularJSのルーティング機能を使用しています。さらに、私はすべてのテンプレート用のコントローラーだけを欲しがっています。AngularJS - ルーティングコンテキストでコントローラーの機能を1回だけ実行する方法
私のコントローラでangularJsController
私はinit
の機能を持っています。これは、コントローラが初めて実行されたときと、明示的に関数を呼び出すときに実行する必要があります。しかし、ルーティングが別のテンプレートを読み込むたびにinit
関数が実行されることはありません。
希望の動作を達成するにはどうすればよいですか?
var app = angular.module("angularJsApplication", ["ngRoute"]);
app.config(function($routeProvider) {
$routeProvider
.when("/overview", {
templateUrl : "overview.html",
controller : "angularJsController"
.when("/settings", {
templateUrl : "settings.html",
controller : "angularJsController"
...
});
app.controller("angularJsController", function ($scope, $location, $http) {
$scope.init = function() {
//do stuff
};
}
:
は、コントローラ(複数可)にサービスを注入することを忘れないでください。 – Dave
まず、これが何のためのサービスなのですか。サービスはシングルトンなので、一度しか初期化されません。 2つ目は、複数のルートで同じコントローラを使用することは絶対に避けてください。 – Claies
@Claiesでは、複数のルートで同じコントローラを使用しないと言う理由を説明できますか?私は過去のw/outの問題でこれをやったことがあります。ちょっと不思議なことに、コントローラを再利用することは完全に受け入れられるようです。 –