2017-02-20 6 views
1
app.controller('myController', [ 
    '$scope', function ($scope) { 
     $scope.doSum = function(x, y){ 
      console.log(x+y); 
     }; 
    } 
]); 


<cmp data-fn="doSum(x, y)"></cmp> 


app.directive('cmp', function(){ 
    return{ 

     templateUrl: 'ui/cmp.html' 
     , 
     replace: true 
     , 
     scope: { 
      dataFn: '&' 
     } 
     , 
     controller: ['$scope' function($scope){ 

       var v = $scope.dataFn({x: 1, y: 2}); 

       console.log(v); 

      } 
     ] 
    } 
}); 

関数をコントローラからanglejs 1.5のディレクティブに渡そうとしています。すべてのチュートリアルによると、これはその方法です。しかし、私はそれを働かせることはできません。手伝ってくれませんか?関数はまったく渡されず、結果は未定義になります。ディレクティブへの関数の渡し方anglejs 1.5

+0

結果を返す必要があり、あなたの 'doSum'機能' X + y'代わりにコンソールログを行うの – floribon

+0

なぜ呼び出します 'doSum'オブジェクトの仕事で? '$ scope.dataFn(1,2)'の代わりに '$ scope.dataFn({x:1、y:2})'を呼び出すことに注意してください。 –

+0

@MikeMcCaughanこれは、式のバインディングにローカル値を渡す正しい方法です(xとyをhtmlで利用可能にします)。 – floribon

答えて

0

問題は、属性内にdata-*という接頭辞があります。非スタンダードのHTML属性を埋め込むために使用されます。

data-fn属性からdata- *接頭辞を削除してください。私は確かに動作します。

私はあなたのためにJsFiddle example作った...

W3Schools data-* attr

+1

あなたは素晴らしいです:)ありがとう。それが問題だった。 – Seya

関連する問題