2015-12-11 70 views
1

请找到单选按钮的plunker。我期待当我选择单选按钮时,从$scope.itemList中选择的对象被分配到selectedItemDetails,但它没有发生。另外,默认情况下,当页面加载时,我希望根据var tagNumTobeSelectedByDefault = 2;选择默认单选按钮,即"Gety of House"默认情况下会被选中,我该怎么做?在angularjs应用程序中默认选择单选按钮

我收到对象的索引,从列表中选择如下:

var indexObjectTobeSet = $scope.itemList.map(function(x) { 
    return x.tagNum; 
}).indexOf(tagNumTobeSelectedByDefault); 

但是,如果不设定特定的单选按钮。

回答

1

当您声明selectedItemDetails为空文字{}时,您没有特定的绑定。声明属性的ng-model可以连接到:

$scope.selectedItemDetails = { selected : null } 

<input type="radio" ng-model="selectedItemDetails.selected" name="eachCat" data-ng-value="eachCat"> 

然后,它的工作原理。现在,你也可以用

$scope.selectedItemDetails = { selected : $scope.itemList[3] } 

http://plnkr.co/edit/9hVxlhzvCmx3PIsbImVD?p=preview

+0

但默认情况下,即使我用$ scope.selectedItemDetails = {scope:selected:null}替换$ scope.selectedItemDetails = {selected:null},单选按钮中的“Gety of House” { “subNum”:1222, “变量名”: “房子的杰蒂”, “tagNum”:2, “slList”:空 }} –

+0

@MadasuK - 即使你有类似的文字ŧ嘿是不同的对象!使用选择:'$ scope.itemList [index]'。你用'ngRepeat'迭代'itemList',所以当你设置默认的选定单选按钮时,使用'itemList'的引用。 – davidkonrad

2

您不设置索引,您将selectedItemDetails的值设置为$scope.itemList阵列中要选择的实际对象。因此,

$scope.selectedItemDetails = $scope.itemList.filter(function(item) { return item.tagNum === tagNumTobeSelectedByDefault; })[0]; 

应该工作(只记得把它$scope.itemList定义后)。你甚至可能会考虑将itemList对象转换为服务或常量。

+0

默认选择是工作正常,但之后设置默认选择的无线电项目,如果我改变的单选按钮选择“selectedItemDetails”是不是反映了变化。 –

+0

它似乎与您现在使用的解决方案一起工作(用ng-model =“selectedItemDetails.selected”替换'ng-model =“selectedItemDetails”'',并可能使用'$ scope.selectedItemDetails = {选择:$ scope.itemList.filter(function(item){return item.tagNum === tagNumTobeSelectedByDefault;})[0]};'这是Angular最佳实践说你的ng模型应该是这样的原因之一总是包含一个'.'(点) –