繁体   English   中英

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.Routeselect )是根据用户选择填充模型的对象

AS datum.Route.destinationlabel )设置用户看到的值

FOR datumvalue )您可以将其视为for / in循环中的迭代变量...类似于ngRoute表达式的第一部分

很显然, 在dataRoutearray )源对象中

使用此表达式后,您的作用域变量selectBox2将使用所选记录的完整“ Route”条目填充,因为我们将其( select )设置为表达式的第一部分。 结果,您可以在视图中为诸如{{selectBox2.destination}}类的属性使用插值。

您可能会发现本文很有帮助: 使用AngularJS的ng-options进行选择

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM