2017-02-01 11 views
0

ためのjavascriptのスコープビューでは、私はそうのようなコントローラを宣言していますビューからアクセス可能なオブジェクトこれはそれでしょうか? testabcはビューからアクセスできますか?これは、コントローラ上で個人的にスコープされた変数を持つ良い方法ですか?は角度と変数アクセス

;(function() { 
    'use strict'; 

    angular 
     .module('myApp') 
     .controller('myController', myController); 

    function myController() { 

     var testabc = 'can you see this'; 
     var dateRef = new Date(); 
     var vm = this; 

     angular.extend(vm, { 
       selectedMonth: undefined 
     }); 

     init(); 

     function init(){ 

      vm.selectedMonth = dateRef.getMonth(); 
     } 


    } 

}()); 

答えて

0

ビューにバインドするものはすべて、ビューからアクセスできます。スコープは、コントローラとHTMLビューの間の接着剤です。月にアクセスできるだけであれば、vmにバインドするだけです。

vm.selectedMonth= dateRef.getMonth(); 

この行で十分です。

+0

質問が多いですが、コントローラの上部にあるvarsを宣言しているのは、私的スコープの変数を持つための良い方法ですか? – JamesNB

+0

あなたはJavaScriptとJavaの間でちょっと混乱していると思います。これらのコントローラーはユーザー間で共有されません。それはすべてクライアント側でインスタンス化されます。 Javaでは、通常、Singletonクラスがある場合、クラスの先頭に変数が宣言されるのを避けます。それ以外の場合は、すべてのスレッドで共有されます。他のコントローラが意図せずに妥協する可能性のある変数が必要な場合は、スコープにバインドし、スコープで作成し、スコープで破棄します。 –

1

最初にコントローラのinitを起動しないと、問題が発生することがあります。 angular ng-initディレクティブを使用することができます。

;(function() { 
    'use strict'; 

    angular 
     .module('myApp') 
     .controller('myController', myController); 

    function myController() { 

     var testabc = 'can you see this'; 
     var dateRef = new Date(); 
     var vm = this; 

     angular.extend(vm, { 
       selectedMonth: undefined, 
       init:init 
     }); 



     function init(){ 

      vm.selectedMonth = dateRef.getMonth(); 
     } 


    } 

}()); 

とビューはイエス、あなたselectedMonthがビューに表示されている

<div data-ng-controller="myController as myCtrl" ng-init="myCtrl.init()"> 
    {{myCtrl.selectedMonth}} 
</div> 

P.Sになります。

+0

ビューからtestabcにアクセスできますか?このようにコントローラの上部にある変数を宣言しているのは、個人的なスコープ変数を持つ良い方法ですか? – JamesNB

+0

コントローラでinitをトリガするのにどのような問題がありますか? – JamesNB

関連する問題