2014-10-31 54 views
1

我的代码是这样的组选定值angularJS

<body ng-app="myApp" ng-controller="MainCtrl"> 
    <select data-ng-model="myclass" data-ng-options="color.name for color in colors"> 
     <option value="">-- Select Freight Class --</option> 
    </select> 
</body> 

    angular.module('myApp', []).controller('MainCtrl', [ 
    '$http', '$scope', '$filter', function ($http, $scope, $filter) { 
    $scope.myclass = { 
     "name": "65" 
    }; 
    $scope.colors = [{ 
     name: '50' 
    }, { 
     name: '55' 
    }, { 
     name: '105' 
    }, { 
     name: '110' 
    }, { 
     name: '400' 
    }, { 
     name: '500' 
    }]; 

}]); 

,你可以看到我试图设置此选择的默认选择的值作为65,但它不工作。任何人都可以告诉我如何做到这一点? http://jsfiddle.net/d8kg0uys/

回答

3

,首先你不必{"name": "65"}对象colors阵列全天。但即使您尝试选择{"name": "55"}选项也不行。原因是因为$scope.myclass不等于colors数组中的任何元素。

角度比较对象将相应的选项设置为选中状态,一个对象等于另一个对象只有当它是相同的对象时。因此,要正确地设置所选的值,你必须在colors阵列提供一个参考到对象:

$scope.myclass = $scope.colors[1]; 
1

参见AngularJS Reference for Select;您可以通过选择您想要的价值的指标做到这一点:

angular 
    .module('myApp', []) 
    .controller('MainCtrl', ['$http', '$scope', '$filter', 
     function ($http, $scope, $filter) { 

      $scope.colors = [{ 
       name: '50' 
      }, { 
       name: '55' 
      }, { 
       name: '65' 
      }, { 
       name: '105' 
      }, { 
       name: '110' 
      }, { 
       name: '400' 
      }, { 
       name: '500' 
      }]; 

      $scope.myclass = $scope.colors[2]; 

     }]); 

所以,你想要的值也应在$scope.colors列表,像我加在它上面。

你的小提琴更正:http://jsfiddle.net/d8kg0uys/1/

1

你是一个对象绑定到NG-模式,而不是对象的字段。这并不是那么糟糕,但是比较javascript中的对象并不像其他语言那样简单。 https://stackoverflow.com/a/1144249/1264360

而且65是不是在你的选择列表中,这样它默认为默认值。

<select data-ng-model="myclass.name" data-ng-options="color.name as color.name for color in colors"> 
    <option value="">-- Select Freight Class --</option> 
</select> 

http://plnkr.co/edit/YLFgjILNUC0RP2aBAT6q?p=preview