2017-11-28 39 views
0

私はまだフロントエンドのもののarround角を理解しようとしています。 私は、yeamanジェネレータを使用して、角型プロジェクトを作成しています。

これは私の問題です:

PS P:\projects\trax> gulp test 
[19:35:22] Using gulpfile P:\projects\trax\gulpfile.js 
[19:35:22] Starting 'scripts'... 
[19:35:30] 
P:\projects\trax\src\app\components\head\user\menu.dialog.controller.js 
    7:9 error "vm" is defined but never used                   no-unused-vars 
    10:5 error You should not set properties on $scope in controllers. Use controllerAs syntax and add data to "this" angular/controller-as 
    14:5 error You should not set properties on $scope in controllers. Use controllerAs syntax and add data to "this" angular/controller-as 
    18:5 error You should not set properties on $scope in controllers. Use controllerAs syntax and add data to "this" angular/controller-as 

✖ 4 problems (4 errors, 0 warnings) 

[19:35:30] all files 14.79 kB 
[19:35:30] Finished 'scripts' after 7.75 s 
[19:35:30] Starting 'test'... 
28 11 2017 19:35:33.855:WARN [proxy]: proxy "\base\src\assets\" normalized to "\base\src\assets\/" 
28 11 2017 19:35:35.077:WARN [watcher]: Pattern "P:/projects/trax/src/**/*.mock.js" does not match any file. 
PhantomJS 1.9.8 (Windows 8 0.0.0): Executed 1 of 1 SUCCESS (0.032 secs/0.34 secs) 
[19:35:38] Finished 'test' after 8.1 s 

それは動作しますが、私はlint警告を防ぐためにしたいと思います。どうやって?私はメッセージを理解しますが、私が言及したように置き換えた場合、私はただエラーを取得します。

これは、上記のファイルのコードです。

angular 
    .module('trax') 
    .controller('MenuDialogController', MenuDialogController); 

function MenuDialogController($scope, $mdDialog) { 

    var vm = this; 


    $scope.close = function close(){ 
     $mdDialog.hide(); 
    } 

    $scope.cancel = function cancel(){ 
     $mdDialog.hide(); 
    } 

    $scope.ok = function ok(){ 
     alert('ok clicked'); 
     $mdDialog.hide(); 
    } 
} 

そして $ scope.close =に述べたように、私は方法を変更した場合、このダイアログ 関数UserControllerで($の範囲、$ mdDialog、$文書){

var vm = this; 

     vm.user = { 
      name: 'Test User' 
     }; 

     vm.showMenu = function showMenu(ev){ 
      $mdDialog.show({ 
       controller: "MenuDialogController", 
       controllerAs: 'vm', 
       templateUrl: 'app/components/head/user/menu.dialog.html', 
       parent: angular.element($document.body), 
       targetEvent: ev, 
       clickOutsideToClose:true, 
       fullscreen: $scope.customFullscreen // Only for -xs, -sm breakpoints. 

      }); 
     }; 
    } 
} 

を開く制御装置であります... LINTで警告が表示されないようにしていますが、ダイアログメソッドはこれ以上作業したくありません。

任意のヒント...? よろしくN00N

答えて

0

変更LINTによって指示されるようにコード:

function MenuDialogController($scope, $mdDialog) { 

    var vm = this; 

    ̶$̶s̶c̶o̶p̶e̶.̶c̶l̶o̶s̶e̶ ̶=̶ ̶f̶u̶n̶c̶t̶i̶o̶n̶ ̶c̶l̶o̶s̶e̶(̶)̶{̶ 
    vm.close = function close(){ 
     $mdDialog.hide(); 
    } 

とコードと一致するようにテンプレートを変更:ダイアログコントローラはcontrollerAS構文を使用してインスタンス化であるので

<md-dialog-actions> 
    ̶<̶m̶d̶-̶b̶u̶t̶t̶o̶n̶ ̶n̶g̶-̶c̶l̶i̶c̶k̶=̶"̶c̶l̶o̶s̶e̶(̶)̶"̶ ̶c̶l̶a̶s̶s̶=̶"̶m̶d̶-̶p̶r̶i̶m̶a̶r̶y̶"̶>̶C̶l̶o̶s̶e̶ ̶D̶i̶a̶l̶o̶g̶<̶/̶m̶d̶-̶b̶u̶t̶t̶o̶n̶>̶ 
    <md-button ng-click="vm.close()" class="md-primary">Close Dialog</md-button> 
</md-dialog-actions> 

をテンプレートには、その構文で使用される識別子'vm'が含まれている必要があります。

+0

thx ...私は頻繁に角度を学習しながら問題を解決するために日を検索します。ほとんど私はそのような小さなものは見ません... – n00n