我正在使用AngularJS ng-repeat来填充select html对象。 每个类别对象都有一个子类别列表,这些子类别根据从第一个选择中选择的主要类别动态计算。这些子类别本身在另一个选择中显示。
代码类似于以下
<div>
<select>
<option ng-value="sk.id" ng-repeat="sk in skills" ng-bind-html="sk.name"></option>
</select>
</div>
<div ng-repeat="cat in mainCategories">
<div>
<select>
<option ng-value="subcat.id" ng-repeat="subcat in cat.allsubcategories" ng-bind-html="subcat.name" ></option>
</select>
</div>
</div>
从第一个选择中选择技能时(ng-repeat =&#34; sk in skill&#34;) 创建一个新类别,并调用函数addMainCategory(见下文)。创建类别时,将调用ajax操作以获取其子类别。之后,主类别及其子类别数组被推到角度范围。 javascript代码如下:
var addMainCategory = function(idCat, nameCat, parent, color){
$scope.$apply(function() {
var newMainCat = {"id": idCat, "name": nameCat, "allsubcategories":[]};
$.ajax('?r=user/subcategory&id='+idCat).done(function(data) {
var cat_parse = JSON.parse(data);
for (var i=0; i< cat_parse.length; i++) {
newMainCat.allsubcategories.push({"id":cat_parse[i].id, "name":cat_parse[i].name});
}
});
$scope.mainCategories.push(newMainCat);
});
然而,尽管正确显示了主要类别,但其子类别(变量&#34; allsubcategories&#34;)未在选择中更新,即嵌套选择内未显示任何子标记,即使变量正确(用firebug检查)。 你有什么建议可以解决这个问题吗?