【发布时间】:2014-10-27 16:30:41
【问题描述】:
我有一个场景,我认为它是合乎逻辑的,但似乎 angular 不支持它。
所以,我在范围/控制器中有一个用户类型列表作为对象数组,如下所示:
$scope.userTypes = [{text : "Buyer", value : "1"},
{text : "Vendor", value : "2"},
{text : "Buyer / Vendor", value : "9"}];
$scope.user = new User(globalSelectedUserType);
用户的定义如下:
function User(userType) {
this.userType = userType;
this.isAdminUser = false;
this.isActive = true;
this.roleDisabled = true;
};
我希望有一个 select 元素,其中包含来自 userTypes 的选项列表,将值绑定到“value”属性,将文本绑定到“text”属性,并将选择值仅绑定到“value”属性数组对象,允许用户从代码中设置值。
所以当我使用此代码从代码创建用户时
$scope.user = new User("9");
它应该在选择“买家/供应商”的情况下初始化选择。
阅读 angular 和 ng-options 中选择元素的文档,似乎是不可能的。 我试过这个
<select name="usertypedata" id="UsersTypeData" ng-model="user.userType"
ng-disabled="user.roleDisabled" ng-options="usertype.value as usertype.text for usertype in userTypes track by usertype.value">
</select>
当我们选择选项时,我只希望 ng-model 填充“值”属性
【问题讨论】:
-
Remove track by,这个问题通常发生在你使用 track by 和 select as (
usertype.value as) 语法时,你不需要两者。 jsbin.com/suniriteqo/2/edit -
我做到了。没用,把select/options中的值作为数组的索引
-
为我工作jsbin.com/suniriteqo/4/edit您使用的是哪个版本的角度?或者在演示中复制您的问题。
-
是的,它在初始化时起作用,但是如果你检查 select 的生成选项,你会看到选项的值是数组元素的索引,而不是数组元素的“值”属性数组元素。我的意思是选项具有值:{0,1,2} 而不是 {1,2,9}
-
你为什么关心选项值,角度管理它,对。您需要担心的是正确的 ngModel 值。也看看stackoverflow.com/questions/26372534/…
标签: angularjs select ng-options