2016-04-06 5 views
0

だ、私が移動したときにそれは完璧に動作なぜrootScopeは<code>load</code>方法の外に、それは私がこのようなコントローラーを持っている権限

(function() { 
    'use strict'; 

    angular.module('myControlleringApp').controller("myController", ['$rootScope', myController]); 

    function myController($rootScope) { 
     $rootScope.status = "loading"; 

     $("#myIFrame").attr('src', "Templates/myControllerViewer.aspx"); 
     $('#myIFrame').load(function ($rootScope) { 
      // some other logic 
      $rootScope.status = "loaded"; 
     }); 
    }; 
})(); 

$rootScope.status = "loaded"; 

を失いました。それ以外の場合は、私の見解の状態は変わりません。ここで

はあなたのloadコールバックで$ rootScopeパラメータは、あなたのコントローラに注入1マスキングされたHTMLの一部

<div id="myControlleringAppView" data-ng-app="myControlleringApp"> 
     <div class="spinner" data-ng-show="status=='loading'"></div> 
     <div id="partialView" data-ng-show="status=='loaded'" data-ng-view="" ></div> 
    </div> 
+0

あなたが同じコントローラを持っているので、なぜ '$ rootScope'ですか? –

+0

@DhavalMarthak申し訳ありませんが、私はrootScopeを使用しています。アプリケーションにグローバル変数を設定していますので、rootScopeを使用しています。 – Mathematics

+1

'$ rootScope'ではなく' services'を使用することをお勧めします。 –

答えて

1

です:

$('#myIFrame').load(function ($rootScope) { // Creates new variable in 
              // the callback's scope! 
    $rootScope.status = "loaded"; // This is now referring to the callback's 
            // parameter, not the service. 
}); 

だから、何が効果的にやっていることはこれです:

$rootScope.status = "loading"; 

$('#myIFrame').load(function (randomNewParam) { 
    randomNewParam.status = "loaded"; // Not $rootScope! 
}); 

あなたが期待しているようです。電話番号loadコールバックにを注入する - これは当てはまりません! According to the jQuery docs、コールバックはこの形を取る必要があります。今、パラメータ名が変更されている

$('#myIFrame').load(function (event) { 
    $rootScope.status = "loaded"; 
}); 

注意を、実際の$rootScopeは再びコントローラ機能のスコープから提供されています - これはあなたが探している機能を提供します!つまり、Dhaval Marthakがコメントで述べたように、アプリケーション全体で値を渡すのに実際には$rootScopeを使用すべきではありません。これはグローバル変数の作成と事実上同じです。サービスと依存性注入は道のりです。

+0

ありがとう、私はここに何かが不足しています===>関数のパラメータを変更しても何の違いもありませんでした:( – Mathematics

+0

ちょっとメモしておくと、ロードイベントコールバックに間違った関数シグネチャを入れてしまいましたが、AJAXロード関数と混ざってしまったのですが、パラメータの名前を変更しても機能しているはずです。コンソールエラーが発生していますか? –

+0

は、また、コンソールにもエラーはありません – Mathematics

関連する問題