2017-05-19 25 views
0

は、次の角度指令を検討:ディレクティブのスコープをプロパティ関数にバインドする方法は?

<my-datepicker 
    ng-model="myController.user.dob" 
    min="1960-01-01" 
    max="2017-12-31" 
    isValid="myController.validateDOB(myController.user.dob)" 
></my-datepicker> 

この場合validateDOB機能はコントローラの範囲に呼び出されます。私は、minとmaxプロパティを使用できるようにするためにディレクティブのスコープ内で呼びたいと思います。私はこれを実行しようとしました:例外で失敗

<my-datepicker 
    ng-model="myController.user.dob" 
    min="1960-01-01" 
    max="2017-12-31" 
    isValid="myController.validateDOB.call(this, myController.user.dob)" 
></my-datepicker> 

Error: [$parse:isecff] Referencing call, apply or bind in Angular expressions is disallowed! は、このために任意の回避策はありますか?

+0

指令が結合されます関数の参照を持っています何が必要なのかを呼び出すことができます。 – dfsq

答えて

0

Angularは、指令の関数の中でcontrollerの関数を呼び出すことができるので、'&'結合オプションを提供しています。

親コントローラ

app.controller('myCntrl', function($scope) { 
    var myController = this; 

    myController.validateDOB = function(dob) { 
     // some code 
    }; 
}) 

指令

app.directive('myDatepicker, function() { 
    return { 
     template: '<button ng-click="handleClick()">Click</button>', 
     scope: { 
      validateDob: '&' 
     }, 
     controller: function($scope) { 
      $scope.handleClick = function() { 
       $scope.validateDob({dob: 'dob'}) 
      }; 
     } 
    } 
}) 

用途:

<div ng-controller="myCntrl"> 
    <my-datepicker validate-dob="myController.validateDOB(dob)"></my-datepicker> 
</div> 
関連する問題