Angular JS:ng-include by function

时间:2016-02-17 09:35:46

标签: javascript angularjs

使用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()。有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

这是预期的行为。

看看this article。 Angular需要检查ng-include的表达式是否已更改。为了做到这一点,它需要在每个摘要循环上评估Ctrl.getTemplate(object),因为没有其他方法可以确定其返回值是否已更改,因此需要将新值传递给ng-include