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