Angularjs Ng使用Ng show重复发射一次以上
我对Angular很陌生,我不确定自己是否违反了任何最佳实践。我正在构建一个日历应用程序,当您选择一天时,它会显示每天的可用时间:Angularjs Ng使用Ng show重复发射一次以上,angularjs,angularjs-ng-repeat,momentjs,ng-show,Angularjs,Angularjs Ng Repeat,Momentjs,Ng Show,我对Angular很陌生,我不确定自己是否违反了任何最佳实践。我正在构建一个日历应用程序,当您选择一天时,它会显示每天的可用时间: <div class="panel" ng-controller="timeCtrl"> <a class="time" ng-repeat="timeObj in timeObjs" ng-click="timeObj.isActive = true"
<div class="panel" ng-controller="timeCtrl">
<a class="time"
ng-repeat="timeObj in timeObjs"
ng-click="timeObj.isActive = true"
ng-class="{ 'is-active' : timeObj.isActive}"
ng-show="weekService.selectedDay.date() === timeObj.time.date()"
>
<span class="time__text">{{ timeObj.time.format('h:mm a') }}</span>
</a>
</div>
{{timeObj.time.format('h:mma')}
在ng show中,我将选择的一周中某一天的日期与选择的时间进行比较(该时间可以访问time obj中的日期)。然而,当我选择之前已经选择的一天时,我会得到2倍于我需要的时间对象。此过程会不断重复(当我单击以前选择的某一天时,会创建更多时间对象)
由于我对Angular还不熟悉,我觉得即使以我希望的方式解决问题,也可能不是最好的方法。我想知道我使用ng show和ng repeat是否有任何问题,我是否应该在这里使用ng view?因为HTML上的每个绑定都在每个摘要周期上进行求值..就像这里的
ng show
表达式在执行提供给它的表达式后运行摘要周期的ng click
上进行求值..同样有许多指令具有$apply
方法包装器它运行摘要循环以保持HTML绑定的更新我在理解这个过程时遇到了一些困难。当你说“在HTML上绑定”时,你是在说代码的{…}部分吗?此外,在ng单击后计算ng show也是所需的行为。是的,它包括{{}
(插值指令)表达式&ng-*
指令,基本上该表达式放在angular watcher对象中,您可以在$$scope
中的$$watchers
对象中找到它。基本上,这些表达式在每个摘要循环中都会得到计算。那么,您是说摘要循环在每次ng单击时运行两次,这会导致重复吗?不…它在每次单击时运行一次..因为ng click
指令的方式已经改变使用负责调用摘要循环的$apply
方法包装。您可以查看以进一步深入了解它。