$rootScope 配列変数 (arrayX) を初期化し、同じコントローラー (controllerA) の $rootScope 関数で使用しようとしています。
この変数とこの関数に $scope の代わりに $rootScope を使用している理由は、後で別のコントローラーからそれらを呼び出すことを計画しているためです。
問題は、コントローラーの $rootScope 関数を呼び出すと、「Uncaught TypeError: data.push is not a function etc.」というメッセージが表示されることです。
$rootScope arrayX = [] 変数を宣言したとしても、関数を呼び出すと、この初期化は無視されるか、認識されないと思います。なぜこのエラーが発生したのか、$rootScope の概念について何が欠けているのか、誰か説明してもらえますか? ありがとう
コード
angular.module('myApp')
.controller('mainCtrl', function ($scope, $rootScope, $uibModal) {
//does this count as a valid variable initialization?
$rootScope.localCart = [];
$rootScope.pushToCart = function (obj) {
$rootScope.localCart.push(obj); //TYPEERROR
....
$rootScope.pushToCart 関数で $rootScope.localCart を再宣言すれば問題ない
$rootScope.pushToCart = function (obj) {
$rootScope.localCart = [];
$rootScope.localCart.push(obj); // OK!
...
私が行方不明の何かがあります。外部関数の初期化が無視されるのはなぜですか? 事前に $rootScope 変数を宣言するのは良い考えだと思いました (関数内宣言と他の $scope 変数との混乱を避けるため...)
編集:サービスの提案をありがとうございました。できるだけ早く試してみます (寝る必要があります!) それだけです... $rootScope 変数が初期化される理由を本当に理解したかったのです。関数から push メソッドを呼び出すと、失敗する/認識されません。