将全局对象的值设置为单选按钮

Set value from a global object to a radio button

本文关键字:设置 单选按钮 全局 对象      更新时间:2023-09-26

我试图将一个单选按钮组绑定到一个对象的给定属性。使用这样的代码

<span><input type="radio" value="{{webTES.TripLegType.TimeCall}}" ng-model="tab.Type"/>Time Call</span>
                                    <br/>
<span><input type="radio" value="{{webTES.TripLegType.Immediate}}" ng-model="tab.Type"/>Immediate</span>
                                    <br/>
<span><input type="radio" value="{{webTES.TripLegType.WillCall}}" ng-model="tab.Type"/>Will Call</span>

绑定到属性可以工作,但我还需要从一个全局对象中设置这些单选按钮的值,这个全局对象在整个应用程序中使用。该对象是这样定义的

var webTES = {
    TripLegType: {
        TimeCall: 0,
        Immediate: 1,
        WillCall: 2
    }
};

我尝试使用{{}},但它不会工作,我讨厌使用硬编码的常量。

我如何很好地解决这个问题?

Thx

尝试将全局置于作用域上,并使用ngValue:

设置单选按钮值。控制器

$scope.webTES = webTES;
视图

<span>
    <input type="radio" ng-value="webTES.TripLegType.TimeCall" ng-model="tab.Type"/>
    Time Call
</span>
<br />
<span>
    <input type="radio" ng-value="webTES.TripLegType.Immediate" ng-model="tab.Type"/>
    Immediate
</span>
<br />
<span>
    <input type="radio" ng-value="webTES.TripLegType.WillCall" ng-model="tab.Type"/>
    Will Call
</span>

如果你不需要从Angular应用程序外部访问它,你可以使用value

angular.module('moduleName')
  .value('webTES', {
    TripLegType: {
      TimeCall: 0,
      Immediate: 1,
      WillCall: 2
    }
  });

这样,它就不会挂在window对象上。然后它可以通过名称注入到controller中,您可以将它放在模板可以找到它的$scope上。如果您想在应用程序加载时配置它,请使用constant