我使用 Angular-ui 的 select2 来实现相当简单的下拉菜单。它由位于我的控制器范围内的静态数据数组支持。在我的控制器中,我有一个在下拉列表的 ng-change 上调用的函数,以便我可以在值更改时执行一些操作。
然而,我发现 ng-model 的属性被设置为 JSON 字符串而不是实际的 javascript 对象,这使得无法使用点表示法从该模型中获取属性。
这是处理下拉列表值更改的函数:
$scope.roleTypeChanged = function() {
//fine:
console.log('selectedType is: ', $scope.adminModel.selectedType);
// this ends up being undefined because $scope.adminModel.selectedType is a
// JSON string, rather than a js object:
console.log('selectedType.typeCode is: ', $scope.adminModel.selectedType.typeCode);
}
这是我的完整示例的一个例子:http://plnkr.co/edit/G39iZC4f7QH05VctY8zG http://plnkr.co/edit/G39iZC4f7QH05VctY8zG
我以前从未见过绑定到 ng-model 的属性这样做,但是我对 Angular 也相当陌生,所以很可能我只是在这里做错了什么。我当然可以执行类似 $.parseJSON() 的操作将 JSON 字符串转换回对象,但除非必须,否则我宁愿不这样做。
谢谢你的帮助!
如果你想拥有对象值,你需要在选择上使用 ng-options 。实际上使用 ng-repeat 自己创建选项只会允许您拥有各种选项的字符串值:
<select ui-select2
ng-model="adminModel.selectedType"
ng-change="roleTypeChanged()"
data-placeholder="Select Role Type" ng-options="type.displayName for type in adminModel.roleTypes">
<option value=""></option>
</select>
http://plnkr.co/edit/UydBai3Iy9GQg6KphhN5?p=preview http://plnkr.co/edit/UydBai3Iy9GQg6KphhN5?p=preview
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)