Angularjs Radio Button NO默认值

时间:2015-12-16 21:53:09

标签: angularjs scala playframework radio-button play-templates

我是一个新项目,我们在前端和Play Framework模板上使用AngularJS来生成HTML页面。我对Angular有一些经验,但我是Play的新手。我遇到的问题是,当未设置时,单选按钮会自动默认为某个值。我希望他们没有默认值。按下单选按钮的顺序并不重要,它始终默认为列出的最后一个值。数据绑定正确,但当我返回页面时,我丢失了保存的值,它默认返回到列出的最后一个值。看起来好像其他东西被绑定到了对象上,但是我没有看到的地方。因此,我为什么要爬到你身边。这是我的Play模板代码,用于创建单选按钮:

@inputRadioGroup( app("primary")("OSPlatform"), options = options("iOS"->"iOS","Both"->"Both","Android"->"Android"), '_label -> "OS/Platform" , Symbol("ng-model")->"data.primary.OSPlatform", '_showConstraints -> true )

这是我的Angular控制器:

app.controller('RegisterAppCtrl', function($scope, $location, registerAppService) {

$scope.$on('$viewContentLoaded', onLoadPage());
$scope.isActive = function(route) {
    return route === $location.path();
};

$scope.data= {};


$scope.$on("$locationChangeStart", function(event){

    registerAppService.set($scope.data);
});

$scope.setData = function() {

    registerAppService.set($scope.data);
};

var init = function() {
    $scope.data = registerAppService.get();
    console.log($scope.data);
};

init();

});

我目前正在退出该对象,下一页看起来就是这个:

 {"primary":{"OSPlatform":"iOS","InternalExternal":"Both","AppName":"This Is The App Name"},"iOS":{"MetaData":{"AppLabel":"This is a App Label"}}}

然后当我返回到设置单选按钮值的原始页面时看起来像这样。

{"primary":{"OSPlatform":"Both","InternalExternal":"Both","AppName":"This Is The App Name"},"iOS":{"MetaData":{"AppLabel":"This is a App Label"}}}

请注意,primary.OSPlatform已设置为Both。此行为在表单上的所有单选按钮上是一致的。我尝试用HTML替换播放模板代码,但我仍然得到相同的行为。当我删除ng-model时,单选按钮没有默认值(我想要的)。所以感觉我有一些未知的东西绑定到这个对象。有没有办法检测绑定到特定对象的内容?到目前为止,在我的研究中,我发现这个问题的答案是否定的。任何帮助是极大的赞赏。如果您需要更多详细信息,请与我们联系。

编辑请求:

我们正在使用Angular 1.4.2。生成的html代码:

<span class="buttonset" id="primary_OSPlatform">

  <input type="radio" id="primary_OSPlatform_Android" name="primary.OSPlatform" value="Android" ng-model="data.primary.OSPlatform" class="ng-pristine ng-untouched ng-valid">
  <label for="primary_OSPlatform_Android">Android</label>

  <input type="radio" id="primary_OSPlatform_iOS" name="primary.OSPlatform" value="iOS" ng-model="data.primary.OSPlatform" class="ng-pristine ng-valid ng-touched">
  <label for="primary_OSPlatform_iOS">iOS</label>

  <input type="radio" id="primary_OSPlatform_Both" name="primary.OSPlatform" value="Both" ng-model="data.primary.OSPlatform" class="ng-pristine ng-untouched ng-valid">
  <label for="primary_OSPlatform_Both">Both</label>

0 个答案:

没有答案