Angularjs 两个表单用于同一个控制器

Angularjs two form for the same controller

本文关键字:表单 用于 同一个 控制器 两个 Angularjs      更新时间:2023-09-26

我对angularjs代码有问题。我有一个角色选择以两种模式复制:创建用户和更改角色。此选择以这种方式填充 http 调用:

<ui-select theme="bootstrap" style="width: 100%;"
    data-ng-model="newUser.role" required> 
    <ui-select-match placeholder="Select role">
       {{$select.selected.role}}
    </ui-select-match> 
    <ui-select-choices
       repeat="role.idRole as role in (roles | filter: $select.search) track by role.role">
       <span data-ng-bind="role.role"></span>
    </ui-select-choices>
</ui-select>

在角度我有:

$http({
        method: 'GET',
        url: 'roles'
    }).then(function successCallback(response) {
        $scope.roles = response.data.result;
        // this callback will be called asynchronously
        // when the response is available
    }, function errorCallback(response) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
    });

所以我把HTML代码放在两种模式的形式中。在第一个中创建用户,一切正常,在第二个中我不能使用不同的 data-ng-model,否则我会收到未定义的元素。例如,我有这个:

<form novalidate class="simple-form" name="newRoleForm">
    <!-- form start -->
    <div class="box-body">
        <div class="form-group">
            <label>New role</label>
            <!-- <ui-select theme="bootstrap" style="width: 100%;"
                data-ng-model="newRole.role" required> <ui-select-match
                placeholder="Select new role">
            {{$select.selected.role}}</ui-select-match> <ui-select-choices
                repeat="role.idRole as role in (roles | filter: $select.search) track by role.role">
            <span data-ng-bind="role.role"></span> </ui-select-choices> </ui-select> -->
            <ui-select theme="bootstrap" style="width: 100%;"
                data-ng-model="newUser.role" required> <ui-select-match
                placeholder="Select role">
            {{$select.selected.role}}</ui-select-match> <ui-select-choices
                repeat="role.idRole as role in (roles | filter: $select.search) track by role.role">
            <span data-ng-bind="role.role"></span> </ui-select-choices> </ui-select>
        </div>
    </div>
</form>
如果我使用

注释代码,我在javascript中没有收到角色值,如果我使用未注释的代码,它可以工作,因为newUser在另一种模式中使用。我可以使用这个实际的代码,但我想了解它为什么有效以及另一个没有。此外,当我打开第二个模态时,我看到第一个模态中设置的值。你知道为什么吗?

获得完美的概述有点棘手,但我想我会尝试回答您的几个问题:

  1. 为什么newRole.role不起作用,而newUser.role却不起作用?

    基本上,据我所知,您自己回答了这个问题。在开始将属性绑定到对象之前,您需要在作用域中的某个位置定义该对象。即控制器中的简单$scope.newRole = {}可能会修复此错误。

  2. 第一个模态
  3. 的值是在第二个模态中设置的?

    我不确定这一点,因为我看不到第二种模态(?但是,如果在同一作用域中重用相同的代码,则会将数据绑定到同一个 newUser 对象。因此每次都获得相同的值。

我希望这在某种程度上有所帮助