AngularJS ngRepeat 中的 ngHref 不计算值

AngularJS ngHref inside ngRepeat doesn't evaluate value

我有以下标记:

<ul ng-if="item.children.length && item.open" class="fadeIn">
    <li ng-repeat="child in item.children" ng-show="child.visible">
        <a ng-href="#/{{ child.link }}">
            <span ng-bind-html="child.title"></span>
        </a>
    </li>
</ul>

当控制器运行时,结果是包含 link 的 LI 元素,其中包含列表中每个项目的跨度,这是预期的结果。

问题是单击 link 时没有任何反应,因为 link 是空的 (#/)。好像 {{ child.link }} 没有计算。

如果我硬编码我的首选 link(#/随便),routeProvider 会选择它并且它可以工作。

我什至更改了 link 参数的名称,但无济于事。 范围菜单结构包含每个菜单的 'link' 参数。

控制台没有报错

为什么不评估 {{child.link}}?

我创建了一个 JSFIDDLE 并使你的代码工作:

<div ng-app='app' ng-controller='ctrl'>
    <ul ng-if="item.children.length && item.open" class="fadeIn">
        <li ng-repeat="child in item.children" ng-show="child.visible"> <a ng-href="#/{{ child.link }}">
            <span ng-bind-html="child.title"></span>
        </a>   
        </li>
    </ul>
</div>

angular.module('app', []).
controller('ctrl', function ($scope, $sce) {
    $scope.item = {
        open: true,
        children:[{
            visible: true,
            link: 'MyFirst',
            title: $sce.trustAsHtml('<h1>First</h1>')
        }]
    }
});

我遇到的唯一问题是 ng-bind-html。查看 this post.

这是我第二次被这样对待了。 这段代码在 django 模板中,我忘记使用逐字标记。这意味着 Django 会在 angular 有机会处理它之前将表达式计算为空。

感谢您的帮助, D.