Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS:如何将正确的模型放在重复的单选按钮上_Angularjs_Radio Button_Angularjs Ng Repeat_Angular Ngmodel - Fatal编程技术网

AngularJS:如何将正确的模型放在重复的单选按钮上

AngularJS:如何将正确的模型放在重复的单选按钮上,angularjs,radio-button,angularjs-ng-repeat,angular-ngmodel,Angularjs,Radio Button,Angularjs Ng Repeat,Angular Ngmodel,我想我这里有一些特殊的代码,因为谷歌对我的问题来说“太简单了”,不幸的是,它也无助于我自己找到解决方案。 我有两台收音机的单选按钮组。我从后端迭代“类型”数据来创建单选按钮。 我的问题是数据绑定:当我想要编辑一个对象时,它的“类型”设置正确,但视图没有注册,所以它没有选择所需的选项 跟随我的处境: 后端为我提供“类型列表”: HTML代码: <span ng-repeat="type in typeList track by type.enumm"> <input

我想我这里有一些特殊的代码,因为谷歌对我的问题来说“太简单了”,不幸的是,它也无助于我自己找到解决方案。 我有两台收音机的单选按钮组。我从后端迭代“类型”数据来创建单选按钮。 我的问题是数据绑定:当我想要编辑一个对象时,它的“类型”设置正确,但视图没有注册,所以它没有选择所需的选项

跟随我的处境:
后端为我提供“类型列表”:

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}}
一些解释
我不想使用“裸体”文本,我想使用某种标识符——在本例中,它是一个枚举。所选值应为整个“类型”,而不仅仅是后端所需的“type.text”,而不是简单的字符串。 因此,我所做的一切都是一个软件包,type.text用于格式化/国际化文本等

预选通过在控制器中设置来工作:
this.object.type=typeList[0]
第一个单选按钮已经被选中,太棒了

但是为什么在编辑对象时不选择它呢。我用
{{myCtrl.object.type}
在HTML中创建了一个“日志”,结果是
{“text”:“cool option”,“enumm”:“cool”}
。就像预选时一样。我已经使用相同的“技术”使用选择输入,它工作得很好。我还发现一些谷歌搜索结果说“使用$parent是因为父/子范围”。但是1)我没有明白这一点,2)我认为这不是问题所在,因为我使用的是控制器作用域而不是$scope,或者这种想法是错误的

这可能解释得很糟糕,如果是这样的话,很抱歉,但我希望有人1)得到我想要的,2)知道解决方法


谢谢大家!

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

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

而这将分配数组的第一个元素(这是您想要的)

因此,要更改模型,您可以从数组中查找条目,并使用类似以下内容将其分配给您的模型

$scope.selectedType = $scope.typeList.filter(...)

下面是此方法的一个快速示例

首先,感谢您的努力!不幸的是你的plunker没有帮助我,但我尝试使用你的想法获取正确的数组元素。我很高兴,这成功了!这既好又烦人,为什么我不能使用我已经填充的模型?因为我现在要做的是:
如果(!self.object.type){self.object.type=$scope.typeList[0];}其他{self.object.type=\$filter($scope.typeList,self.object.type)[0];}
但是好的,当它工作时,对我来说已经足够了:)谢谢!
$scope.selectedType = {"text":"cool option","enumm":"COOL"};
$scope.selectedType = $scope.typeList[0];
$scope.selectedType = $scope.typeList.filter(...)