![](/img/trans.png)
[英]How to assign scope variable with comprehension expression to ng-options
[英]ng-options comprehension expression not working with my data
我正在尝试让我的<select>
显示文件routes.json
包含的每个Route。 但是,当我使用ng-option时,我似乎无法找出正确的表达式来执行此操作。
这是要加载的数据。 我想将该路线的目的地放入选择框。
HTML :
<label>Route: </label> <select ng-model = "selectBox2" ng-options="Route.destination for Route in data"> </select>
控制器代码 :
kpsApp.controller('addMailItemController', function($scope,filefetch){
$scope.price = 'priceless';
filefetch.fetch().then(function(data){
$scope.dataRoute = data;
})
});
编辑
Route.json :
{
"Route": {
"objectId": "ObjectRef",
"origin": "Sydney",
"destination": "Rome",
"type": "Air",
"maxWeight":"5000",
"maxVolume":"29000",
"wieghtCost":"1000",
"volumeCost":"1000",
"duration": "18hrs",
"frequencyOfDeparture": "2 daily",
"day":"Thursday",
"company":"Transport Co.",
"weightPrice":"7",
"volumePrice":"5",
"priority": "International Air"
}
}
编辑2
fileFetch方法
kpsApp.factory('filefetch', function($q, $timeout, $http) {
var getFile = {
fetch: function(callback) {
var deferred = $q.defer();
$timeout(function() {
$http.get('../route.json').success(function(data) {
deferred.resolve(data);
});
}, 30);
return deferred.promise;
}
};
return getFile;
});
我认为这可以满足您的要求,但是请检查我制作的Plunker ,以确保:
<select ng-init="selectBox2 = selectBox2 || dataRoute[0].Route" ng-model="selectBox2" ng-options="datum.Route as datum.Route.destination for datum in dataRoute"></select>
要将理解表达式分解成几个部分:
datum.Route ( select
)是根据用户选择填充模型的对象
AS datum.Route.destination ( label
)设置用户看到的值
FOR datum ( value
)您可以将其视为for / in循环中的迭代变量...类似于ngRoute表达式的第一部分
很显然, 在dataRoute ( array
)源对象中
使用此表达式后,您的作用域变量selectBox2
将使用所选记录的完整“ Route”条目填充,因为我们将其( select
)设置为表达式的第一部分。 结果,您可以在视图中为诸如{{selectBox2.destination}}
类的属性使用插值。
您可能会发现本文很有帮助: 使用AngularJS的ng-options进行选择
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.