Jquery调用angular' s函数然后调用$ apply()总是得到错误:[$ rootScope:inprog]

时间:2016-10-05 10:19:35

标签: jquery angularjs

我使用ng-repeat生成指令-a,并且在指令-a模板中也使用ng-repeat生成指令-subA。

我知道当我使用jquery来调用角度函数时,我必须调用$ apply()来提高摘要周期。

但是当我在控制台中调用$ apply()时,它会显示错误消息:

  

错误:[$ rootScope:inprog] ...

但结果是正确的。

如果我评论$ apply()调用代码,则不显示错误,但结果不是我想要的。

帮助我,PLZ。

这是我的数据结构:

tyep:{
    id:'XXX',
    name:'XXX'
}
product:{
    id:'XXX',
    name:'XXX'
}

specs:[type1,type2,type3]
products:[A,B,C]

查看

<div ng-controller="testController">        
    <test class="test" ng-repeat="spec in specs" 
        spec="spec" products="products"></test>
</div>

指令:测试

{
    restirct:'E',
    replace:true,
    scope:{
        spec:'=',
        products:'='
    },
    template:
        <div>
            {{spec.name}}
            <sub-test product="product" 
                ng-repeat="product in products">
            </sub-test>
        </div>,
    link:function(scope,elem,attrs){}
}

指令:子测试

{
    restrict:'E',
    replace:true,
    scope:{
        product:'='
    },
    template:
        <div>{{product.name}}</div>,
    link:function(scope,elem,attrs){}
}

控制器:的TestController

$scope.products={};
$scope.specs={};
$scope.set=function(products,specs){
    this.products=products;
    this.specs=specs;
}

jquery的

$(function(){
    specs:[type1,type2,type3];
    products:[productA,productB,productC];
    angular.element($('.test')).scope().set(specs,products);
    angular.element($('.test')).scope().$apply();
})

0 个答案:

没有答案