我試圖初始化一個$ rootScope數組變量(arrayX),並在同一個控制器(controllerA)的$ rootScope函數中使用它。
我使用$ rootScope而不是$ scope作爲這個變量的原因是這個函數是我打算稍後從另一個控制器調用它們。
問題是,當我調用控制器的$ rootScope函數時,我得到一個'Uncaught TypeError:data.push不是函數等。'
我相信,即使我聲明$ 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變量init。我從函數調用push方法時失敗/無法識別。
$ rootScope應該放在幾乎所有情況下。你爲什麼需要這裏? – lux
您應該將此邏輯添加到服務中,然後將服務注入到需要的其他控制器 – mindparse
嘗試使用'$ scope'而不是'$ rootScope',那樣會更好(並且最終確實會創建一個服務) – floribon