【发布时间】:2016-09-23 02:12:04
【问题描述】:
所以我有一个带有几个异步 .then 函数的控制器。最后,我使用 $q.all() 函数将它们全部捕获,以继续我的同步工作。现在我有一个带有动态选项的选择:
<select ng-model="data.selectedUser" ng-change="changeList()" ng-options="user as user.firstname + ' ' + user.lastname for user in users">
<option value="">Select a user...</option>
</select>
使用 ng-change 我想在我的控制器中获取选定的用户,所以我调用了 changeList()。在 changeList 函数中,我做了一些不会触发的简单警报。当我首先在控制器中执行测试警报时,它甚至会在选择选项时冻结。
在我的 $q.all() 函数中:
$q.all(promises).then(function () {
users = UserService.getUsers();
$scope.users = users;
$scope.data.selectedUser = {};
$scope.changeList = function () {
var chosenUser = $scope.data.selectedUser;
alert(chosenUser.firstname);
alert('test');
};
}, function () {
alert('Failed');
});
警报什么都不做,我还尝试将 changeList 函数从控制器底部的 $q.all 函数中取出。我做错了什么?
编辑: 用户已经定义,所有这些都在工作。这纯粹是关于为什么 ng-change 不起作用。也没有先清空 selectedUser 范围的情况下进行测试。
【问题讨论】:
-
首先,您正在重置 $scope.data.selectedUser = {};到一个空对象,第二(我不知道这是不是故意的)你没有在用户上使用 var 关键字( user = UserService ....,而不是 var user = Userservice ....
-
抱歉忘了说用户已经定义了所有这些都已经在工作了。它纯粹是关于 changeList 问题。此外,范围重置是因为如果我不先将其定义为空,通常它将无法工作。但也经过测试,但问题仍然存在
-
是的,但您必须在函数之外定义 $scope.data.selectedUser。而且我不明白为什么 $scope.changeList 在你的 q.all 结果块中
-
当我这样做时,例如在控制器开始时,我的选择列表不知何故为空
-
它在 $q 方法中,因为我在它的外部和内部都试过了。
标签: angularjs select ionic-framework controller angularjs-ng-change