0

我想我在这里有一些特殊的代码,因为我可以谷歌所有我的问题“太简单”,它也没有帮助自己来解决方案,可悲的是。 我收到了一个包含2个收音机的单选按钮组。我正在迭代来自后端的“类型”数据以创建单选按钮。 我的问题是数据绑定:当我想编辑一个对象时,它的“类型”设置正确,但未被视图注册,因此它不会选择所需的选项。AngularJS:如何把正确的模型重复单选按钮

Follwing我的情况:
后端提供我这是 “类型串”:

[ 
{"text":"cool option","enumm":"COOL"}, 
{"text":"option maximus","enumm":"MAX"} 
] 

HTML代码:

<span ng-repeat="type in typeList track by type.enumm"> 
    <input 
     type="radio" 
     name="type" required 
     ng-model="myCtrl.object.type" 
     ng-value="type"> 
    {{type.text}} 
</span> 

一些解释
我不想要使用“裸体”文本,我想使用索姆一种标识符 - 在这种情况下它是一个枚举。选择的值应该是整个“类型”,而不仅仅是“type.text”,因为后端需要类型,而不是简单的String。 因此,所有我做这始终是一个包啄,该type.text对于像格式化/ internationlized文本等

预选工作在控制器设置这样的:this.object.type = typeList[0]; 第一个单选按钮已经精选,精彩。

但是编辑对象时为什么不选中。我在HTML中用{{myCtrl.object.type}}做了一个“日志”,结果是{"text":"cool option","enumm":"COOL"}。与预选时相同。我已经使用选择输入使用相同的“技术”,并且工作正常。我还发现一些谷歌结果说“由于父/子范围使用$父母”。但是1)我没有弄明白,2)认为这不是问题,因为我使用的是控制器范围而不是$ scope,或者这种想法是错误的?

它可能被解释得很糟糕,如果是这样,对不起,但我希望有人1)得到我想要的,2)知道它的解决方案。

谢谢!

回答

1

如果您尝试绑定到数组中的元素,我相信您需要将数组中的实际元素分配给您的模型属性。

因此,这将创建一个新的obj并将其设置为$scope.selectedType(不是你想要的):

$scope.selectedType = {"text":"cool option","enumm":"COOL"}; 

,而这给数组的第一个元素(这是你想要的)

$scope.selectedType = $scope.typeList[0]; 

因此,要改变模型,你可以查找该数组中的条目,并将其与像这样

$scope.selectedType = $scope.typeList.filter(...) 
分配给你的模型

下面是这种方法的一个简单示例http://plnkr.co/edit/wvq8yH7WIj7rH2SBI8qF

+0

首先,感谢您的努力!不幸的是你的笨蛋没有帮助我,但我试图用你的想法来获取正确的数组元素。 我很高兴,这**工作**!这既好又烦,为什么我不能用我已经填满的模型?因为我现在做的是这样的: 'if(!self.object.type){0} {0} {0} self.object.type = $ scope.typeList [0]; } else { self.object.type = _.filter($ scope.typeList,self.object.type)[0]; }' 但没关系,因为它的工作对我来说已经足够了:) 谢谢! – BAER 2014-08-30 08:03:18