【问题标题】:Angular model not changed when clear Kendo DatePicker from js code从 js 代码中清除 Kendo DatePicker 时,角度模型未更改
【发布时间】:2016-08-22 11:54:20
【问题描述】:

我有 html 并希望在用户按下“删除”按钮时清除值

我的代码:

    var handleDateKeyDown = () => {
        $('input[kendo-date-picker]').each((i, el) => {
            $(el).keydown((ev) => {
                ev.preventDefault();
                if (ev.key === "Delete") {
                    $(el).data("kendoDatePicker").value(null);
                }
                return false;
            });
        });
    }

UI 部分工作,此代码清除 kendoDatePicker 值,但模型没有改变,有一些简单的解决方案来清除 kendoDatePicker 值和角度模型值?我不能使用$scope.Pile.Date = null;,因为我想将此方法绑定到页面上的所有日期选择器...

编辑:下面缺少 html:

<input kendo-date-picker k-ng-model="Pile.Date" ng-blur="Save()" />

【问题讨论】:

  • 如果你使用 angular 可能你应该在 "value(null)" 之后添加 $scope.apply() 调用?
  • 不工作,我想是因为模型(Pile.Date)没有改变

标签: javascript angularjs kendo-ui datepicker


【解决方案1】:

这是我能想到的某种解决方案(肯定不是最好的)

plnkr 手动清空模型

        $('input[kendo-date-picker]').each((i, el) => {
        $(el).keydown((ev) => {
            ev.preventDefault();
            if (ev.key === "Delete") {
                $scope.dateString = null
                $(el).data("kendoDatePicker").value(null);
                $scope.$apply()

            }
            return false;
        });
     });   

另一种解决方案: 添加删除按钮处理程序作为指令:

app.directive('del',function(){
 return {
 restrict:'A',
 scope:{ngModel:'='},
 link:function(scope,el,attrs){
   el.keydown((ev) => {

     scope.$apply(()=>{
       $(el).data("kendoDatePicker").value(null);  
       scope.ngModel = null;          

     })
   })
 }
}
}) 

plnkr

【讨论】:

  • 您手动将模型设置为 null ($scope.dateString = null) 这不是我的问题的解决方案,因为我的日期选择器很少并且不知道应该清除哪个模型..
  • 如果您按下按钮 - 您是否希望一次清除所有日期选择器?还是唯一选择的?
  • 非常好的解决方案,但它需要元素的 ng-model="modelName" 属性,我使用 k-ng-model="modelName" 来获取 Date 对象中的日期和一些 UI 首选项,是否有可能使此解决方案与 k-ng-model="modelname" 属性一起使用?
  • 是的,只需将 ngModel 替换为 kNgModel 就可以了
【解决方案2】:

您可以在return false; 之前尝试$scope.$apply(),看看它是否有效。 jQuery 的事件触发器可能不会触发 Angular 中的 $diggest 循环。

【讨论】:

  • 刚试过,没有按预期工作,因为模型'Pile.Date'值没有像我上面所说的那样改变......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 2014-09-21
  • 1970-01-01
相关资源
最近更新 更多