【问题标题】:Angular Select with async in a directive在指令中使用异步的角度选择
【发布时间】:2023-03-17 16:17:01
【问题描述】:

尽我所能,我无法在异步完全工作的情况下获得角度选择。我可以让它大部分正常工作 - 但不是所有的。

想象一下控制器的样子:

 $scope.stuff = {};
 $scope.stuff.blah = "SOME_KEY";
 External.list().then( function (data ) {
   $scope.stuff.sourceSystems =data; 
 });

然后这会很好地显示值

 <select ng-model="stuff.blah">
 <option ng-repeat="(key, value) in stuff.sourceSystems | orderBy" value="{{key}}">{{key}}</option>
 </select>

但由于某种原因,这在开始时有一个额外的空白选项:

<select ng-model="stuff.blah" ng-options="key for (key, value) in stuff.sourceSystems | orderBy"></select>

但是 - 在这两种情况下,我设置为 SOME_KEY 的现有值都没有被选中。在第一种情况下,列表中的第一个值被选中 - 在第二种情况下,一个空白值被选中。在这两种情况下 - 基础绑定值都是 SOME_KEY。但是 - 一旦我实际更改所选值,通过将其下拉 - 绑定值(等等) - 正确更改。

这是在 bindToController 设置为 true 的指令中。

我做错了什么?

【问题讨论】:

  • 这就是我在第二个示例中所做的 - 实际上 - 我刚刚找到了一种解决方法 - 如果我使用 ng-options 并在承诺处理程序中绑定到完整对象 - 即 $scope.stuff.blah =数据 [“SOME_KEY”] 它正在工作 - 但似乎有点 hack :(
  • 您确定data 中的响应没有空键吗?如果您可以从列表中发布您的回复,我们将更容易帮助调试。

标签: javascript angularjs angular2-directives


【解决方案1】:

$scope.stuff.blah

,在 ng-repeat 中,重复的值为 Object(包括 angular hashkey)

try this, and read ng-options

 <select ng-model="stuff.blah" ng-options="system.key as system.key for system in stuff.sourceSystems | orderBy">
 </select>

【讨论】:

  • 试过了——但没用——列表中什么也没有。注意 - sourceSystems 很烦人,因为键不存在于数据中的任何位置 - 它实际上是一个哈希表,其中“键”项仅存在于表的键中 - 不存在于表中的任何项目中
猜你喜欢
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 2016-10-17
  • 2018-03-07
  • 2016-01-15
  • 2016-12-27
相关资源
最近更新 更多