我有以下指令:
offerListSorters.directive('offersSorter', ['myState', '$templateCache', function (myState, $templateCache){
return {
scope: {},
controller: function($scope, $element, $attrs, $transclude) {
[...]
},
restrict: 'E',
//templateUrl: 'partials/offersSorterDirective.html',
template: $templateCache.get('partials/offersSorterDirective.html'),
replace: true,
transclude: true
};
}]);
我使用 Karma + Jasmine 来测试这段代码,它可以工作。但现在如果我切换到 templateUrl (当前已注释掉),它就不起作用。我创建了一个简单的笨蛋 http://plnkr.co/edit/qE57VpL8XOyF8xjmmRdp?p=preview来展示这个问题。当您比较 sorter 和 bsorter 指令时,当我使用 templateUrl 而不是 template 时,编译元素上的isolateScope() 调用似乎会中断。有任何想法吗?
这是最奇怪的事情,我认为这实际上是一个错误,如果您使用 templateUrl,则不会获得隔离的范围。模板本身已正确加载,但范围从未加载。我有更新了 plnkr http://plnkr.co/edit/jHqHzzV4H8hjGhymctfW?p=preview通过一些额外的日志记录,查看控制台,您就会明白我的意思,bsorter
未获取 ng-isolate-scope 类,并且范围返回为未定义。
Edit:
我进一步更新了 plnkr 以在调用编译函数时记录控制台消息。这几乎是我的 javascript/angularJS 知识的限制,但是 bsorter 编译函数被记录为被调用after应该返回范围,与调用的排序器编译函数不同before.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)