0

我是一个项目的新手,我们在前端使用 AngularJS 并使用 Play Framework Templates 来生成 HTML 页面。我对 Angular 有一些经验,但我是 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>

4

0 回答 0