我是一个项目的新手,我们在前端使用 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>