AngularJS设置默认的SELECT值

时间:2013-11-30 08:22:02

标签: angularjs

基本的“购物车”场景。用户应该在表单环境中选择所需的产品。每个产品都有核心价格和多个额外选项,可在选择时更改价格。

产品和选项显示在两个SELECT字段中,这两个字段的填充方式如下:

$scope.products = [
{
    name:'Product A',
    cost:5,
    options: [{name:"Option 1", value:10}]
},

{
    name:'Product B',
    cost:10,
    options: [{name:"Option 1", value:10},{name:"Option 2", value:15}]
}
];

$scope.cart = {
    items: [{            
        qty: 1,
    }]
};

<tr ng:repeat="item in cart.items">
  <td>
    <div class="type-select">
      <select ng-model="item.product" ng-options="p.name for p in products"></select>
    </div>      
  </td>
  <td>
    <div class="type-select">
      <select ng-model="item.option" ng-options="o for o in item.product.options.name" ng- disabled="!checked">
    </div>         
  </td>    
  <td>
    <input ng:model="item.qty" value="1" size="4" ng:required="" ng:validate="integer" class="ng-pristine ng-valid ng-valid-required input-mini">
  </td>
  <td>
     {{calculate()}}
  </td>
</tr>

如何设置购物车项目的默认值?

1 个答案:

答案 0 :(得分:2)

你可以看一下物品。

添加项目后,您应该将该项目的产品指定为第一个产品。这样的事情:

$scope.$watchCollection('cart.items', function(newValue, oldValue){
   var changedItem = newValue[newValue.length-1];
   changedItem.product = $scope.products[0];
});

当然,假设您知道$ scope.products是一个数组而且它不是空的。你可以检查一下。无论如何,我觉得拥有默认值是很奇怪的,但有一种方法可供你使用。