NG-如果表示异步调用[重复]期间两个元件(ng-if showing both elements

2019-10-28 20:11发布

这个问题已经在这里有一个答案:

  • 在AngularJS的$ HTTP请求中显示微调GIF? 26个回答

使用:v1.3.15我明白编码器试图通过使用这两个选择菜单来完成。 然而,由于在选择框被加载的数据是API调用的结果,有一个延迟,因此两个选择菜单显示,直到数据已被检索。

有没有一种方法使用一个选择元件,而数据是不使用两个选择菜单是从后端( 而object.name为空 )取来显示“搜索”信息选项? 如果没有,我怎么能做到这一点,使得只有一个将显示,而不是两个,而数据正在获取?

更新:尝试使用默认值ng-option (不工作,不知道如何解决)

<p class="input-group" flex>
        <label for="obj-name" class="input-group__label">Name
        </label>
<select
        ng-if="object.names !== null"
        id="obj-name"
        type="text"
        class="input-group__input"
        placeholder=""
        ng-model="response.object.id"
        ng-options="object.id as object.name for object in object.names"
        ng-change="object.saveName()">
        <option value="" disabled>
             {{fetching?'Searching...':'Select...'}}
        </option>
    </select>
          <!-- <select ng-if="object.name === null" type="text" class="input-group__input" disabled="true">
            <option selected>Searching...</option>
          </select> -->

更新来更新 包括JS文件

Controller.js

$scope.fetching = true;
   $q.when($scope.modification)
      .then((modification) => {
        $selectEl.getObjectOptions(object.id, object.status)
        .then((results) => {
          results.unshift({ id: null, name: ' '});
          this.optionsData = results;
        }).then(() => {
          $scope.fetching = false;
        });
      });

selectEl.service.js

export class SelectEl {

  constructor ($q, $http) {
    this._$q = $q;
    this._$http = $http;
  }

  getObjectOptions(objId, status) {

    let params = {
      obj_id: objId,
      status_id: status
    };


    return this._$http.get(url, { params: params })
    .then((result) => {
      return result.data;
    })
  }   

Answer 1:

我认为这个问题是在语句中,试试这个来代替:

<p class="input-group" flex>
        <label for="obj-name" class="input-group__label">Name
        </label>
        <select
              ng-if="object && object.name"
              id="obj-name"
              type="text"
              class="input-group__input"
              placeholder="Select..."
              ng-model="object"
              ng-options="object.id as object.name for object in objects || 'Searching...'"
              ng-change="object.saveName()">
          </select>
          <select ng-if="!object || !object.name" type="text" class="input-group__input" disabled="true">
            <option selected>Searching...</option>
          </select>
</p>


文章来源: ng-if showing both elements during asynchronous call [duplicate]