首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当JavaScript更新输入值时,AngularJS筛选不起作用

当JavaScript更新输入值时,AngularJS筛选不起作用
EN

Stack Overflow用户
提问于 2016-09-24 12:47:54
回答 2查看 42关注 0票数 0

我试图从几天内做一些有棱角的东西,而且我遇到了一个更新问题。

这是我HTML页面的一部分:

代码语言:javascript
复制
<div ng-app="monApp" ng-controller="monControleur">
Date de début : <input type="text" ng-model="date_deb" placeholder="JJ/MM/AAAA" value="" name="date_d" id="champ_date_deb" size="12" maxlength="10">&nbsp;<span id="calendarMainDeb"></span>
<script type="text/javascript">
//<![CDATA[
    calInit("calendarMainDeb", "Calendrier Deb", "champ_date_deb", "jsCalendar", "day", "selectedDay","calendarWrap1");
//]]>
</script>
<table border='1'>
<tr data-ng-repeat="evenement in mydata | entre_deux_dates:date_deb:date_fin ">
....

当我用键盘输入一个新的date_deb时,显示的值会用角过滤。相反,如果使用JS日历设置date_deb值,则设置值,但不实现过滤,除非在JS中给予焦点并按下“空格”。

以下是更新日期值的JS的最后一部分:

代码语言:javascript
复制
field.value = dateArr[0]+'/'+dateArr[1]+'/'+dateArr[2];
field.focus();

在日历中选定日期之后,我能做什么来动态更新过滤后的值呢?,我不希望用户在每次选择之后不得不按“空格”.

我已经尝试过很多角度上的解决方案(纳克-模型-选项等)。在JS,但都没有用。

EN

回答 2

Stack Overflow用户

发布于 2016-09-24 12:49:45

您需要调用摘要周期:

代码语言:javascript
复制
 $scope.$applyAsync(function() {
         field.value = dateArr[0]+'/'+dateArr[1]+'/'+dateArr[2]; 
         field.focus();
});

这是因为在每个摘要周期(apply意味着运行根范围摘要)中,范围层次结构中的所有观察者都会检查更改,并在必要时进行更新。

票数 0
EN

Stack Overflow用户

发布于 2016-09-24 21:36:37

您可以将您的答案放在$timeout中,因为$timeout运行摘要周期,同时还可以从错误"$apply alreay runs“中保存。

代码语言:javascript
复制
$timeout(function() {
     field.value = dateArr[0]+'/'+dateArr[1]+'/'+dateArr[2]; 
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39676515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档