在异步调用期间,ng-if会同时显示两个元素

8 浏览
0 Comments

在异步调用期间,ng-if会同时显示两个元素

使用:v1.3.15\n我理解程序员使用两个选择菜单的目的。然而,因为在选择框中加载的数据是通过 API 调用的结果,所以会有延迟,因此在数据被检索到之前,两个选择菜单都会显示出来。\n有没有办法在从后台获取数据时(当 object.name 为空时)只使用一个选择元素来显示“搜索中”的消息选项,而不使用两个选择菜单?如果没有,我该如何做到在获取数据时只显示一个而不是两个?\n更新:\n尝试在 ng-option 中使用默认值(不起作用,不确定如何修复)\n

\n \n \n\n \n\n更新 UPDATE 包括 JS 文件\nController.js\n$scope.fetching = true;\n $q.when($scope.modification)\n .then((modification) => {\n $selectEl.getObjectOptions(object.id, object.status)\n .then((results) => {\n results.unshift({ id: null, name: \' \'});\n this.optionsData = results;\n }).then(() => {\n $scope.fetching = false;\n });\n });\nselectEl.service.js\nexport class SelectEl {\n constructor ($q, $http) {\n this._$q = $q;\n this._$http = $http;\n }\n getObjectOptions(objId, status) {\n let params = {\n obj_id: objId,\n status_id: status\n };\n return this._$http.get(url, { params: params })\n .then((result) => {\n return result.data;\n })\n } \n

0
0 Comments

问题的原因是在于ng-if语句内部,通过ng-if指令在异步调用期间,两个元素都被显示出来。解决方法是根据给出的代码,修改ng-model的数据结构,然后根据ng-if语句中的object来确定使用哪个object(ng-model还是for...in循环中的迭代器),从而解决问题。

0