Angular js指令模型更改未在函数中反映出来

时间:2013-09-16 14:31:34

标签: angularjs

我有一个如此定义的指令:

.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()中使用的Model值。我遇到的问题是即使在指令中设置了值,它也没有显示在LoadValue函数中。

$scope.MyDate= '';

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

不确定我做错了什么。一切似乎都是正确的,我没有错误。

2 个答案:

答案 0 :(得分:0)

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

$scope.LoadValue = function() {
    return function() {
        var params = { date: $scope.MyDate};
        //The rest of your function
    };
}

答案 1 :(得分: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();
        }
    }
});