使用AngularJS有条件地隐藏可编辑文本属性

时间:2014-07-10 16:17:06

标签: javascript angularjs x-editable

我正在使用X-Editable和AngularJS for Form

<form editable-form name="userform" onaftersave="submitUser()">
                    <table class="user_table">
                        <tr class="userrow name">
                            <td class="info">First Name</td>
                            <td class="desc">
                                <span editable-text="curuser.firstName" e-name="firstName" e-maxlength="25">{{curuser.firstName}}</span>
                            </td>
                        </tr>
                        <tr class="userrow email">
                            <td class="info">E-Mail</td>
                            <td class="desc">
                                <span editable-email="curuser.email" e-name="email" e-maxlength="48">{{curuser.email}}</span>
                            </td>
                        </tr>
                        <tr class="userrow authority">
                            <td class="info">Role</td>
                            <td class="desc user-roles">
                                <span editable-select="roleUpdated" e-name="roles" e-ng-options="role as role.name for role in roles" onaftersave="updateRole(curuser, roleUpdated)">{{ showRoles() }}</span>
                                    {{ showRoles() }}
                                </span>
                            </td>
                        </tr>
                        <tr ng-if="curuser.id == null" class="userrow command">
                            <td class="info"></td>
                            <td class="desc">
                                <button type="submit" class="submit_button btn btn-primary" ng-show="!readonly && !amanager">Submit</button>
                            </td>
                        </tr>
                    </table>
                </form>  

有两个标准,一个允许用户更新所有字段,另一个允许用户只允许编辑角色,即选择角色。 我的实际问题是如何根据特定条件使表单元素可编辑/不可编辑。 如果我从所有字段手动删除可编辑文本,则它满足第二个条件。有什么办法可以根据条件添加可编辑文本 任何人都有任何有用的想法?

先谢谢

3 个答案:

答案 0 :(得分:2)

我知道时间已晚,但我自己也面临同样的问题

例如,假设您不想允许修改电子邮件,除非电子邮件是默认电子邮件

<span editable-email="curuser.email" e-name="email" e-maxlength="48" ng-if="curuser.email=='Enter an e-mail'">
{{curuser.email}}
</span>

<span e-name="email" e-maxlength="48" ng-if="curuser.email != 'Enter an e-mail'">
{{curuser.email}}
</span>

这只是一个例子,但我确信你可以激励自己

答案 1 :(得分:0)

混合jquery和angularjs不是一个好习惯,除非它们干净利落地分开。我猜你想看看这个 - http://vitalets.github.io/angular-xeditable/

答案 2 :(得分:0)

我相信写一个新的指令是正确的方法。如果与ng-if合并,则可能会使用ng-repeat遇到各种问题。