【问题标题】:angular xeditable prevent onclick open all fields in edit modeangular xeditable 防止 onclick 在编辑模式下打开所有字段
【发布时间】:2017-08-26 08:20:14
【问题描述】:

我正在为表单中的一个字段使用 angularjs xeditable。
PLUNKER LINK
我使用谷歌地图 api 自动完成添加商店。我可以根据需要添加任意数量。城市和国家/地区字段会相应更新,地址字段也是可编辑格式。

问题是:

当我有多个商店,并且我想编辑地址字段(可编辑)时,当我单击可编辑字段时,所有可编辑字段都会打开并进入编辑模式。
我怎样才能将其限制为单击而不是其他人?

<form editable-form name="myxedit">
   <fieldset ng-repeat="shop in myModel.shops track by $index">
...
    <div>
      <span e-name="erer" class="editable-click" ng-click="$form.$show()" ng-disabled="myxedit.$waiting" e-ng-blur="$form.$hide()" href="#" editable-text="shop.address">
        {{ shop.address || 'empty' }}
      </span>
      <span ng-show="myxedit.$visible">
        <button type="submit" class="btn btn-primary" ng-disabled="myxedit.$waiting">
          <span class="glyphicon glyphicon-ok"></span>
        </button>
        <button type="button" class="btn btn-default" ng-disabled="myxedit.$waiting" ng-click="myxedit.$cancel()">
            <span class="glyphicon glyphicon-remove"></span>
        </button>
      </span>
    </div>
...
  </fieldset>
</form>

【问题讨论】:

    标签: javascript angularjs forms angularjs-ng-repeat angular-xeditable


    【解决方案1】:

    上述行为的原因是您的 ng-repeat 在表单内。使用 xeditable,您的一个元素应该是一种形式。如下更改您的代码,它将解决问题。

    <div>
        <span e-name="erer" class="editable-click" ng-click="$form.$show()" ng-disabled="myxedit.$waiting" e-ng-blur="$form.$hide()" href="#" editable-text="shop.address">
                  {{ shop.address || 'empty' }}
              </span>
        <form editable-form name="myxedit">
          <span ng-show="myxedit.$visible">
                  <button type="submit" class="btn btn-primary" ng-disabled="myxedit.$waiting">
                    <span class="glyphicon glyphicon-ok"></span>
          </button>
          <button type="button" class="btn btn-default" ng-disabled="myxedit.$waiting" ng-click="myxedit.$cancel()">
            <span class="glyphicon glyphicon-remove"></span>
          </button>
          </span>
        </form>
      </div>
    

    请注意,这里我们为每个 ng-repeat 项目设置了单独的表单。

    【讨论】:

    • 但是我的表单中有很多其他字段,我应该如何处理它们?
    • 它们应该是一个单独的表单。但是您应该为每个 ng-repeat 项目设置单独的 editable-form
    • 请看看我的 plunker,你会发现我不能到处乱扔我的表格。我有一个表格,ng-repeat 中的一个字段应该是可编辑的。我不能把它和其他的分开。你能根据你的解决方案给一个工作的plunker吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    相关资源
    最近更新 更多