1

次のように定義されたディレクティブがあります。

.directive("datepicker", function () {
    return {
        restrict: 'E',
        scope: {
            date: '=',
            filterfnc: '&'
        },
        replace: true,
        controller: ["$scope", '$http', '$resource', 'services', function ($scope, $http, $resource, services) {
        $scope.RunFilter = function () {
            $scope.date = '9-16-2013';
            $scope.filterfnc();
        }
    }]

私は次のようにディレクティブにアクセスしています:

<datepicker date="MyDate" filterfnc="LoadValue()"></datepicker>

MyDate は、関数 LoadValue() で使用されるモデル値です。私が抱えている問題は、値がディレクティブに設定されていても、LoadValue 関数に表示されないことです。

$scope.MyDate= '';

    $scope.LoadValue= function () {
        var params = { Date: $scope.MyDate };
        ...
    }

私が間違っているのかわかりません。すべてが正しいようで、エラーは発生していません。

4

2 に答える 2

0

これは本当に奇妙で、他の回答が見たいです。双方向バインディングの更新などに時間がかかるようです。私はそれを次のように動作させました:

app.directive("datepicker", function ($timeout) {
    return {
        restrict: 'E',
        scope: {
            date: '=',
            filterfnc: '&'
        },
        replace: true,
        controller: function ($scope) {            
            $scope.RunFilter = function () {                    
                $scope.date = '9-16-2013';
                $timeout(function(){
                    $scope.filterfnc();
                });                 
            }
            $scope.RunFilter();
        }
    }
});
于 2013-09-16T14:48:30.620 に答える
0

確かではありませんが、属性値としてLoadValue, なし を使用するか、次のように定義する必要があると思います()filterfncLoadValue

$scope.LoadValue = function() {
    return function() {
        var params = { date: $scope.MyDate};
        //The rest of your function
    };
}
于 2013-09-16T14:37:03.527 に答える