有条件地检查角度的无线电

时间:2013-09-05 22:27:07

标签: button angularjs binding radio-button

我有一个广播组,一个按钮和一个布尔值。单击该按钮时,如果布尔值为true,则选中一个单选按钮,如果为false,则检查另一个。不知道如何为这样的东西设置绑定。

修改

事实证明情况有点复杂。

流程如下:

     
  1. 提供2个按钮一个立即购买一个购买分期付款
  2.  
  3.   提出了追加销售   
          
    1. 如果您点击立即购买,请在订单商品哈希
    2. 中添加“addon”sku     
    3. 如果您点击分期付款,请在商品哈希中添加“addon_plan”sku
    4.     

      因此哈希的不同状态如下:

      //base offer only
      order.items = {base_offer: 1}
      
      //base offer with payment plan
      order.items = {base_offer_plan: 1}
      
      //accessory kit only if base_offer_plan was not selected
      order.items = {accessory_kit: 1}
      
      //accessory kit with plan if user first chose base_offer_plan
      order.items = {accessory_kit_plan: 1}
      

2 个答案:

答案 0 :(得分:0)

以下是我如何处理类似场景的示例...注意在指令中使用的ng-class你可能想要使用ng-checked但做类似的事情...在我的情况下我最终得到两个作为切换的按钮是没问题:

directive('buttonsRadio', [function()
{
    return {
        restrict: 'E',
        scope: {model: '=', options: '='},
        controller: function($scope)
        {
            $scope.activate = function(option) {
                $scope.model = option;
            }
        },
        template: "<div class='btn-group' data-toggle='buttons-radio'><div ng-repeat='option in options track by option.optionId'><button type='button' class='btn' ng-class='{active: option.optionId==model.optionId}' ng-click='activate(option)'>{{option.name}}</button><br></div></div>"
    }
}])

要注意我没有在这里正确设置ng-model,所以它会更新到外面并且可以用于我的目的,但可能不对。有关于与我在其他地方使用的ng-model集成的文档,特别是:

   // view -> model
   // bit of jQuery in this case to handle async geocoding results
   $(iElement).geocomplete().bind("geocode:result", function(event, result){
       ctrl.$setViewValue(result.formatted_address);
       console.log(result.formatted_address);
       scope.$emit("geocodeResultComplete", result); //use this event to update a google map
    });

    // model -> view
    ctrl.$render = function() {
       iElement.val(ctrl.$viewValue);
    };

    // load init value from DOM
    //ctrl.$setViewValue(iElement.val());

答案 1 :(得分:0)

使用ng-value并将模型的值设置为该值将检查无线电。

ng-value="true"会将其设置为true,其中value =“true”将是字符串'true'true != 'true'复选框返回true / {{ 1}}布尔值,不是字符串。

http://jsfiddle.net/TheSharpieOne/d7yWb/

HTML

false

控制器:

<input type="radio" name="boolRadio" ng-model="checkboxValue" ng-value="true" />
<input type="radio" name="boolRadio" ng-model="checkboxValue" ng-value="false" />
<input type="submit" ng-click="updateValue()" />
<input type="checkbox" name="bool" ng-model="checkbox" />

我们将默认复选框设置为false,因为它未定义,单击“提交”将不会在开始时正确设置收音机。

你可以通过删除updateValue函数并将收音机的模型直接设置为复选框来立即查看该复选框。