Angularjs Ng使用Ng show重复发射一次以上

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"

我对Angular很陌生,我不确定自己是否违反了任何最佳实践。我正在构建一个日历应用程序,当您选择一天时,它会显示每天的可用时间:

    <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
方法包装。您可以查看以进一步深入了解它。