2014-10-31 53 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