【发布时间】:2018-04-29 16:36:36
【问题描述】:
目前正在使用 AngularJS,我遇到了“选择选项”的问题。
我正在执行 $http 请求以从 Cloud SQL 数据库中获取数据。
为此,我调用工厂中的一个函数并从我的数据库中返回数据。
如您所见,我首先使用包含 2 个值(1 和 2)的数组初始化我的“controller.connections”变量。
获取我的数据后(使用我的“f_getData”函数),我更改了该数组的值(我添加了 4 个值,并且我不使用获取的数据只是为了测试,但行为是相同的)。
供您参考,我的 ng-app 位于“html”标签上,而 ng-controller 位于“body”标签上。 我将 ng-repeat 用于我的选项,因为我使用 ng-options 的行为相同。 在我的选择下方,我有一个 ng-repeat 与完全相同的条件进行测试。
如您所见,我在 ng-repeat for my select 中的变量似乎没有更新。 虽然,相同的变量会在“p”标签上的 ng-repeat 上更新。
所以我尝试了:
- $scope.$apply() 在回调 ('then') 中,但控制台说 $digest 正在完成。回调后我也试过了,它说 $apply() 正在完成,所以我尝试了 $timeout 2 秒,但没有做任何事情。
- $scope.connections 而不是 controller.connections,但我猜这会产生问题,因为 ng-repeat 创建了自己的范围。
- 在回调中为我的大数组使用一个临时变量,然后在回调中将我的“连接”变量的值更改为这个临时变量,最后调用 $scope.$apply()。我的选项上的 ng-repeat 没有更新,但我的 'p' 标签上的 ng-repeat 是。
所以基本上我的问题是:我不能使用 ng-repeat 或 ng-options 来创建动态选择输入。 有没有人有办法解决吗 ? 提前致谢
【问题讨论】:
-
只是一个问题,为什么你的插值是用括号而不是花括号?
-
@Zooly,我们可以使用 interpolateprovider 来更改默认值,stephane,你能为此问题创建一个 [plunker] (plnkr.co/edit/?p=catalogue)
-
@SunilLama 哦,好吧,我不知道这一点,很有趣,谢谢!
-
@Stephare,您可以使用超时方法,用更少的时间重新绑定 ng-option 值。
-
用你的文件制作 plunker,我保证我会解决你的问题。
标签: javascript angularjs select angularjs-ng-repeat