AngularJS ng选项,使用<选择>
AngularJS ng-options, working with key value pairs in <select>
我一直在尝试处理一个通过$http调用检索并用于填充下拉框的对象。
我的对象看起来像这样:
{1: Item1
↵L", 2: "Item2
↵", 3: "Item3
↵"}
在我的控制器中:
$scope.data = {};
$http.get(baseUrl + "/Lookup/Get?param=Ref_myModel").success(function (result) {
$scope.data.myModel = result
})
.error(function (error) {
$scope.data.error = error;
});
最后在HTML中:
<select class="form-control" id="MonStatus" ng-model="data.myModel" ng-options="key as value for (key , value) in data.myModel"></select>
选择下拉列表中填充了模型中的值,没有任何问题,但一旦用户选择了值,该值就会被键替换。我一直在阅读文档,试图理解ng选项,但我遇到了一些问题,因为所有的例子都使用了具有正确键和值格式的对象,而我有一个键和文本。
您使用$scope.data.myModel作为您的模型和选项的源元素。这些应该是单独的:
$scope.data = {};
$scope.data.myModel = '';
$http.get(baseUrl + "/Lookup/Get?param=Ref_myModel").success(function (result) {
$scope.data.options = result
})
.error(function (error) {
$scope.data.error = error;
});
那么在你看来:
<select class="form-control" id="MonStatus"
ng-model="data.myModel"
ng-options="key as value for (key , value) in data.options"></select>
这将把选择绑定到myModel,并让选项保持原样。。。
一些额外的建议:
另外,不要在控制器中进行$http调用,而是将它们放在服务中。始终尽可能避免控制器中的逻辑,并让服务/工厂负责繁重的工作。此外,将data-
放在ng-*
属性之前也是个不错的主意。
相关文章:
- Div根据<选择>菜单
- 如何更改<选择>使用angularJS从控制器获得的值
- 当<选择的选项>重新选择
- 依赖<选择>HTML和JavaScript菜单
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- 如何传递相同页面<选择>值到同一页<f: param>
- 渲染<选项值=“;foo”;选择>在服务器上
- <选择>标签不起作用
- 当我有<选择>下拉列表
- 记住<选择>重新加载页面
- <中的链接;选择>下拉选项
- 映射多个<选择>至<输入>
- <上的applyBindings();选择>正在导致我的subscribe()起火,
- 触发器<输入类型=“;文件“>用angular程序选择文件
- 如何动态生成X数量的新<输入>基于a<选择>(Angular2内)
- 为:gt或:lt选择器设置变量零基数
- 用“<选择></选择>"类型
- JQuery.append的</选择>标记被忽略
- 如何从
- 使用lt(3)选择器为每个元素设置不同的背景色