Javascript 嵌套ng repeat中的AngularJS动态数组
我正在使用AngularJS ng repeat填充一个SelectHTML对象。 每个类别对象都有一个子类别列表,该列表根据从第一次选择中选择的主类别进行动态计算。这些子类别本身显示在另一个选择中 代码类似于下面的代码Javascript 嵌套ng repeat中的AngularJS动态数组,javascript,angularjs,Javascript,Angularjs,我正在使用AngularJS ng repeat填充一个SelectHTML对象。 每个类别对象都有一个子类别列表,该列表根据从第一次选择中选择的主类别进行动态计算。这些子类别本身显示在另一个选择中 代码类似于下面的代码 <div> <select> <option ng-value="sk.id" ng-repeat="sk in skills" ng-bind-html="sk.name"></opti
<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=“sk in skill”)
将创建一个新类别,并调用函数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);
});
var addMainCategory=函数(idCat、nameCat、父级、颜色){
$scope.$apply(函数(){
var newMainCat={“id”:idCat,“name”:nameCat,“所有子类别”:[];
$.ajax('?r=user/subcategory&id='+idCat).done(函数(数据){
var cat_parse=JSON.parse(数据);
对于(var i=0;i
但是,尽管主类别显示正确,但其子类别(变量“allsubcategories”)不会在select上更新,即嵌套select中不会显示任何子类别,即使该变量正确(使用firebug检查)。
你有什么建议来解决这个问题吗?$scope.maincegories.push(newMainCat);这可能是因为angular在
ajax()之后立即运行apply()
调用而不等待它完成。为什么不使用$http
而不是ajax,这样您就不必担心这些类型的异步问题?