2017-03-07 11 views
0

は*ご注意ビューコントローラに指令からオブジェクトを渡す:まず https://plnkr.co/edit/PAINmQUHSjgPTkXoYAxf?p=previewangular.js -

私はディレクティブのクリックイベントにパラメータとしてオブジェクトを渡したい、 :Plunkerのリンクがあります(それは私にとっては複雑すぎる)ので、イベントとオブジェクトを別々に送信することで簡単にすることにしました。

私のプログラムでは、オブジェクトはView ControllerとPlunkerの例とは反対のビューで常に定義されていません。

Plunkerの例では、コントローラー上で最初に通過するイベントでのみ定義されています(2番目の指示イベントは正常に動作します)。

  • 私は単純なPlunkerシミュレーションと大規模なコードで2つの異なる結果が得られるのか分かりませんが、両方のケースが同じロジック問題の2つの異なる結果であることを願っています。
  • イベント関数によるディレクティブからパラメータとしてオブジェクトを渡すソリューションも歓迎されます。

HTML

<pick-er get-obj-d="getObj()" obj-d="obj"></pick-er> 

ビュー - コントローラ

function mainController($scope) 
{ 
    $scope.test = "work"; 
    $scope.getObj = function(){ 
     $scope.test = $scope.obj; 
    } 
} 

指令:

function PickerDirective() 
{ 
    return { 
     restrict: 'E', 
     scope: // isolated scope 
     { 
      obj : '=objD', 
      getObj: '&getObjD' 
     }, 
     controller: DirectiveController, 
     template:`<div ng-repeat="item in many"> 
         <button ng-click="sendObj()"> 
          Click on me to send Object {{item.num}} 
         </button> 
        </div>` 
    }; 


    function DirectiveController($scope, $element) 
    { 
     $scope.many =[{"num":1,}]; 
     $scope.sendObj = function() { 
      $scope.obj = {"a":1,"b":2, "c":3}; 
      $scope.getObj(); 
     } 
    } 
} 

答えて

2

Iあなたの場合、このPlunkerを見て、イベントを使用することがよりシンプルになります。

https://plnkr.co/edit/bFYDfhTqaUo8xhzSz0qH?p=preview

メインコントローラ

function mainController($scope) 
{ 
console.log("mainCTRL ran") 
$scope.test = "work"; 
    $scope.$on('newObj', function (event, obj) { 
    $scope.obj = obj; 
    $scope.test = obj; 
    }); 
} 

指令コントローラ

function DirectiveController($scope, $element) 
    { 
    $scope.many =[{"num":1,}] 
     $scope.sendObj = function() { 
      $scope.$emit('newObj', {"a":1,"b":2, "c":3}) 
     } 
    } 

    return { 
     restrict: 'E', 
     controller: DirectiveController, 
     template:'<div ng-repeat="item in many"><button ng-click="sendObj()">Click on me to send Object {{item.num}}</button></div>' 
    } 
+0

「イベント」の使用方法を教えてください。私はいくつかの哲学的定義に加えてネット上で確かな答えを見つけることができませんでした。リンクや例も受け入れられます:-) – tomersss2

+0

角度の書類を確認しましたか? https://docs.angularjs.org/api/ng/type/$rootScope.Scope、 'event'はコールバックに角度をつけて渡されるイベントオブジェクトです –