我遇到了一个非常令人沮丧的问题,我无法弄清楚,而且我自己也不知道自己调试它。
基本上,我有一个非常简单的指令,打印" 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错误吗?我只是不理解某事吗?
答案 0 :(得分:2)
在附加模板后尝试运行scope.$apply
:
angular.element(document).ready(function() {
element.html('').append($compile(template)(scope));
scope.$apply();
});