我正在努力尝试在我的表单上使用指令。 我有日期时间字段,我需要使用插件,以保持旧的浏览器兼容性。
这是我的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();
});
答案 0 :(得分:0)
正如ruhul指出$ apply是一个函数,所以你应该实际调用它。
然而,依赖范围变量并不是最好的方法。 看起来你的指令实际上取决于父指令,所以我只需要父控制器:
restrict : 'AE',
require : '^parentDirective',
scope : {
value : '='
}
然后你可以在不污染范围的情况下做任何你需要做的事情。