Angularjs指令不更新父范围

时间:2016-08-25 11:46:09

标签: angularjs angularjs-directive angularjs-scope

我正在努力尝试在我的表单上使用指令。 我有日期时间字段,我需要使用插件,以保持旧的浏览器兼容性。

这是我的HTML

<input ng-model="search.endDate" type="text" date-time-picker value="search.endDate" class="form-control">

这是我的指示

app.directive('dateTimePicker', function(){
    return {
        restrict : 'AE',
        scope : {
            value : '='
        },
        link : function($scope, element, attrs){
            element.bind('blur', function(){
                $scope.value = element.val();
                    $scope.apply;
            });
        }
    }
});

我想要完成的事情: 在Parent Scope中,我有$ scope.search.endDate,它存储稍后要发送的日期。

我想使用没有模板的指令,每次我更改该字段的值时,父范围上的值都会更新。

我的问题: 上面的代码工作到一定程度,我可以从插件中选择日期和时间,这可以转换为 08/25/2016 12:21 PM ,但它似乎是$ scope .apply仅在第一次工作,这意味着如果我从插件中选择另一个日期时间,则不再更新父范围变量。

如何通过更改字段上的值将更改传播到父范围?

我做错了什么?

EDIT1:

element.bind('blur', function(){
                $scope.value= element.val();
                $scope.$apply();
            });

1 个答案:

答案 0 :(得分:0)

正如ruhul指出$ apply是一个函数,所以你应该实际调用它。

然而,依赖范围变量并不是最好的方法。 看起来你的指令实际上取决于父指令,所以我只需要父控制器:

    restrict : 'AE',
    require  : '^parentDirective',
    scope : {
        value : '='
    }

然后你可以在不污染范围的情况下做任何你需要做的事情。

相关问题