使用ng-include时我有奇怪的经验。我试图通过触发控制器中定义的函数来获取模板路径,该函数根据传递的参数返回路径。这是我的代码 -
<tr ng-repeat="detail in Ctrl.details" ng-include="Ctrl.getTemplate(object)"></tr>
位指示 -
self.getTemplate = function (obj) {
if (<condition>) {
return 'view1';
} else return 'view2';
};
这工作得非常好,但我在调试代码时发现了非常奇怪的行为。 在我的表格行中,我有3个按钮,我在它们上面应用了Bootstrap工具提示。每当我将它们悬停时,工具提示就会出现。在鼠标左边调用getTemplate()。有人知道为什么会这样吗?
答案 0 :(得分:1)
这是预期的行为。
看看this article。 Angular需要检查ng-include
的表达式是否已更改。为了做到这一点,它需要在每个摘要循环上评估Ctrl.getTemplate(object)
,因为没有其他方法可以确定其返回值是否已更改,因此需要将新值传递给ng-include
。