jQuery Mobile& AngularJS复选框水平

时间:2014-02-21 12:19:00

标签: angularjs jquery-mobile angularjs-ng-repeat jquery-mobile-checkbox

一起使用jQuery Mobile和AngularJS,没有插件但已经阅读过它,首先加载jQuery,这两个框架大多播放得非常好,而且两者都非常强大。

尝试使用

呈现jQuery Mobile复选框
<div data-role="fieldcontain">
  <legend>Showing more lodges slows the display</legend>
  <fieldset data-role="controlgroup" data-type="horizontal">
      <label ng-repeat-start="(lodgekey, lodge) in data.lodges" for="chooser_{{lodgekey}}">{{lodge.lodgetitle}}</label>
      <input ng-repeat-end id="chooser_{{lodgekey}}" type="checkbox" ng-model="lodge.selected" />
    </div>
  </fieldset>
</div>

问题是jQuery Mobile在Angular执行重复之前完成将复选框设置为按钮。所以重复的复选框垂直叠加,即使我在字段集中使用了data-type =“horizo​​ntal”,并且每个显示为第一个/最后一个orphan - 它们在AngularJS执行其ngRepeat之前。在http://demos.jquerymobile.com/1.0a4.1/docs/forms/forms-checkboxes.html查看代码示例并查看呈现的DOM显示它应该呈现的方式。

1 个答案:

答案 0 :(得分:0)

到目前为止,我的解决方案是使用Angular重现jQuery Mobile表单,但这不是理想的,这是我的代码:

<div data-role="fieldcontain" id="lodge-chooser">
  <legend>Showing more lodges slows the display</legend>
  <fieldset data-role="controlgroup" data-type="horizontal" class="ui-corner-all ui-controlgroup ui-controlgroup-horizontal">
    <div class="ui-checkbox" ng-repeat="(lodgekey, lodge) in data.lodges">
      <label ng-class="{'ui-btn-active':lodge.selected, 'ui-corner-left':$first, 'ui-corner-right':$last}" for="{{lodgekey}}">{{lodge.lodgetitle}}</label>
      <input id="{lodgekey}}" type="checkbox" ng-model="lodge.selected" />
    </div>
  </fieldset>
</div>

和CSS:

/* remove incorrect rounded corners which appear on all buttons*/
div#lodge-chooser label.ui-btn.ui-corner-all {
  border-radius:0!important;
}

/* reinstate rounded corners in correct places */
div#lodge-chooser label.ui-btn.ui-corner-left {
  border-bottom-left-radius:inherit!important;
  border-top-left-radius:inherit!important;
}
div#lodge-chooser label.ui-btn.ui-corner-right {
  border-bottom-right-radius:inherit!important;
  border-top-right-radius:inherit!important;
}

这是有效的,注意到div.ui-checkbox是冗余嵌套的,因为jQuery Mobile仍然添加它,但我的添加提供了所需的样式,额外的嵌套div似乎没有任何伤害。