我一直在尝试使用通过$ 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-options的文档,但是由于所有示例都使用具有正确键,值格式的对象,而我却拥有键和文本,因此遇到了一些问题。
您使用$ 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-*
属性之前是个不错的主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句