Javascript 嵌套ng repeat中的AngularJS动态数组

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

我正在使用AngularJS ng repeat填充一个SelectHTML对象。 每个类别对象都有一个子类别列表,该列表根据从第一次选择中选择的主类别进行动态计算。这些子类别本身显示在另一个选择中

代码类似于下面的代码

    <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,这样您就不必担心这些类型的异步问题?