ng-repeat不会渲染(除非任何范围变量发生变化)

时间:2016-12-16 22:53:07

标签: angularjs angular-ui-router directive

我遇到了一个非常令人沮丧的问题,我无法弄清楚,而且我自己也不知道自己调试它。

基本上,我有一个非常简单的指令,打印" 1,2,3"使用ng-repeat:

myApp.directive('foo', ['$compile', function($compile) {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
              var template = '<ul><li ng-repeat="node in [1,2,3]">{{node}}</li></ul>';

              //Render template
              angular.element(document).ready(function() {
                element.html('').append($compile(template)(scope));
              });
         }
    }
}]);

该指令几乎适用于所有情况,除非将页面刷新为ui-router状态。如果我转换到包含来自另一个状态的指令的状态,它会起作用,但如果我只是将页面加载到该状态则不行。

这是好奇的事情。如果我只修改任何范围变量(不管哪一个),它将神奇地开始工作。这是我创建的一个小提琴,用来演示这个问题。

http://jsfiddle.net/789Ks/247/

这是一个ui-router错误吗?我只是不理解某事吗?

1 个答案:

答案 0 :(得分:2)

在附加模板后尝试运行scope.$apply

angular.element(document).ready(function() {
    element.html('').append($compile(template)(scope));
    scope.$apply();
});