LoginSignup
6
6

More than 5 years have passed since last update.

AngularJSで未定義の任意の値をController間で渡す

Last updated at Posted at 2014-04-24

こういう風に実現できたんだけど、本当は良くないのかな.. 自信なし。意見求む。

利用する値をいちいちFactoryで定義しなくていいので、楽ではあるんだけど。
やりたいことは、ページを切り替え(Controllerを切り替え)たりする際に引数を渡したい。

  • 値の受け渡し用の空の(ダミー?)のFactoryを定義
Factory
angular.module('hogeApp')
    // Controller間で引数をやりとりするためのFactory
    .factory('ShareData', function () {

        // 何も書かないとエラーになったので記載
        return {
        };
    })
;

  • 受け渡し「元」のController
    • この hoge は、どこにも定義していない任意の変数
Controller①
angular.module('hogeApp')
    // 先ほどの ShareData をDIしておく
    .controller('MainCtrl', ['$scope', 'ShareData', function ($scope, ShareData) {

        // これはng-clickで定義した関数
        $scope.showItem = function(){
            ShareData.hoge = "ほげほげ";

            // 〜ここに遷移的な何か

        };

    }])
;
  • 受け渡し「先」のController
Controller②
angular.module('hogeApp')
    // こちらも ShareData をDIしておく
    .controller('SubCtrl', ['$scope', 'ShareData', function ($scope, ShareData) {

        $scope.hogetext = ShareData.hoge;
    }])
;

それともグローバルな変数で受け渡すのが正解なのかしら。

6
6
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6