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

不太确定,但我想你应该使用LoadValue, without (), 作为filterfnc属性值,或者LoadValue定义为

$scope.LoadValue = function() {
    return function() {
        var params = { date: $scope.MyDate};
        //The rest of your function
    };
}
于 2013-09-16T14:37:03.527 回答
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 回答