Angular JS:ngShow没有约束我的变化

时间:2014-07-10 02:29:36

标签: javascript angularjs angularjs-scope

我在一个更大的rails项目中有一个Angular模块。我是Angular的新手,如果可以的话,我希望避免使用jQuery(但是在整个rails项目中使用它并且必要时可以使用它)。我要做的是在结束时间为""时隐藏一个复选框,如果结束时间中有值,则显示一个复选框。不幸的是,如果结束时间为"",我无法隐藏它。参见:

enter image description here

您可以在下面看到我的HTML代码:

 <div class="control-group span8">
        <h4 class="pull-left"><strong>Active Hours (UTC):</strong></h4>
      </div>
      <div class="control-group span1">
        <label class="control-label label-unstyled font-size-14"     for="inputStartTime">Start Time</label>
        <div class="controls">
           <select ng-model="geoRegion.start_time" id="inputStartTime" class="input-small" ng-options="thisHour.value as thisHour.name for thisHour in hours" value="{{geoRegion.start_time}}"></select>
        </div>
      </div>
      <div class="control-group span1">
        <label class="control-label label-unstyled font-size-14" for="inputEndTime">End Time</label>
          <div class="controls">
            <select ng-model="geoRegion.end_time" id="inputEndTime" class="input-small" ng-options="thisHour.value as thisHour.name for thisHour in hours" value="{{geoRegion.end_time}}"></select>
        </div>
      </div>
      <div class="control-group span8">
                    <div ng-show="clearGeoSegment(geoRegion.end_time)"><label class="inline checkbox label-unstyled font-size-14"><input type="checkbox" id="clearGeoSegment" ng-model="geoRegion.clear_segment">Clear Geo Segment at end of active time period.</label></div>
      </div>
      <div class="control-group span8">
        <p id="broadcast-notice" class="pull-left font-size-14"><strong>Note:</strong> If active hours is blank, the Geo Segment is always active.</p>
      </div>

我的控制器代码(是的,我使用了jQuery。但请另外建议!):

$scope.clearGeoSegment = (endTime) ->
  if endTime is ''
    $('#clearGeoSegment').hide()
  else
    $('#clearGeoSegment').show()

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

因此您不需要使用jquery进行隐藏/显示。当复选框应该可见时,你需要绑定到一个真实的表达式。在这种情况下,它应该简单:

<div ng-show="geoRegion.end_time">

您可以完全删除clearGeoSegment功能。