AngularJS匹配ng模型,用于选择和无线电不同步
在尝试使用select with ng选项和使用ng repeat的收音机同步类似功能时,我的型号出现问题。模型和细节都是一样的,但它们没有正确同步,我也不知道为什么。基于Stack上类似的帖子,我尝试向radio添加$parent,但也没有成功 基本上,我试图做的是基于顶级选择(类别),基于所选父级显示子选项(描述)。您可以看到,一旦选择单选选项,模型将失败 下面是一个例子来说明这个问题: 这是我的控制器:AngularJS匹配ng模型,用于选择和无线电不同步,angularjs,angularjs-ng-model,Angularjs,Angularjs Ng Model,在尝试使用select with ng选项和使用ng repeat的收音机同步类似功能时,我的型号出现问题。模型和细节都是一样的,但它们没有正确同步,我也不知道为什么。基于Stack上类似的帖子,我尝试向radio添加$parent,但也没有成功 基本上,我试图做的是基于顶级选择(类别),基于所选父级显示子选项(描述)。您可以看到,一旦选择单选选项,模型将失败 下面是一个例子来说明这个问题: 这是我的控制器: $scope.selection = {}; $scope.tagCategori
$scope.selection = {};
$scope.tagCategories = [
{
id: 1,
tagCategoryName: "Payor Issues"
}, {
id: 2,
tagCategoryName: "Technical Issues"
}, {
id: 3,
tagCategoryName: "Special Project Tags"
}
];
$scope.tagDescriptions = [
{
id: 1,
tagDescriptionName: "Payor Issue 1",
tagCategoryId: 1
},
{
id: 2,
tagDescriptionName: "Payor Issue 2",
tagCategoryId: 1
},
{
id: 3,
tagDescriptionName: "Technical Issue 1",
tagCategoryId: 2
},
{
id: 4,
tagDescriptionName: "Technical Issue 2",
tagCategoryId: 2
},
{
id: 5,
tagDescriptionName: "Special Project 1",
tagCategoryId: 3
}
];
$scope.selection.category = $scope.tagCategories[1];
$scope.categories = $scope.tagCategories;
$scope.descriptionsForCategory = function(category) {
if (category) {
return $scope.tagDescriptions.filter(function (s) {
return s.tagCategoryId == category.id;
});
}
return [];
};
关联的HTML:
<div class="form-group">
<label class="control-label">Category</label>
<!-- NG-MODEL USING SELECT OPTION -->
<select name='category' class="form-control" ng-model="selection.category" ng-options="category as category.tagCategoryName for category in categories"
required>
<option value="" disabled>Select</option>
</select>
<ul>
<!-- NG-MODEL USING NG-REPEAT RADIOS -->
<li ng-repeat="category in categories">
<div class="radio">
<input type="radio" name='category' ng-model="selection.category" id="category{{category.id}}" ng-value="category.tagCategoryName">
<label for="category{{category.id}}">{{category.tagCategoryName}}</label>
</div>
</li>
</ul>
</div>
<div class="form-group">
<label for="description" class="control-label">Description</label>
<select name='description' required id="description" class="form-control" ng-disabled="descriptions.length == 0" ng-model="selection.description" ng-options="description as description.tagDescriptionName for description in descriptionsForCategory(selection.category)">
<option value="" disabled>Select</option>
</select>
<ul>
<li ng-repeat="description in descriptionsForCategory(selection.category)" ng-model="selection.description">
{{description.tagDescriptionName}}
</li>
</ul>
</div>
类别
挑选
-
{{category.tagCategoryName}
描述
挑选
-
{{description.tagDescriptionName}
我希望这是我忽略的一件小事。如果您能了解问题的原因,我们将不胜感激
谢谢您的问题是您的
正在存储类别
对象,而您的
正在存储类别。tagCategoryName
字符串:
挑选
在ng options
中,您将类别设置为category.tagCategoryName,用于categories In categories
,它表示“将类别对象存储在我的作用域中,并使用tagCategoryName作为categories中每个类别的显示名称”
对于您的收音机,ng值
设置为category.tagCategoryName
字符串,因此get将绑定到您的作用域。所以,select使用对象,收音机使用字符串。我通过更新收音机,将类别
作为值来修复此问题:
.您的问题是您的
正在存储类别
对象,而您的
正在存储类别。tagCategoryName
字符串:
挑选
在ng options
中,您将类别设置为category.tagCategoryName,用于categories In categories
,它表示“将类别对象存储在我的作用域中,并使用tagCategoryName作为categories中每个类别的显示名称”
对于您的收音机,ng值
设置为category.tagCategoryName
字符串,因此get将绑定到您的作用域。所以,select使用对象,收音机使用字符串。我通过更新收音机,将类别
作为值来修复此问题:
.谢谢迈克尔!我知道这是我忽略的一件小事。谢谢你!!谢谢你,迈克尔!我知道这是我忽略的一件小事。谢谢你!!