0

我有以下标记:

<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>

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

问题是单击链接时,由于链接为空 (#/),什么也没有发生。好像 {{ child.link }} 没有被评估。

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

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

控制台没有错误

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

4

2 回答 2

1

这是我第二次有这样的经历。此代码在 django 模板中,我忘记使用逐字标记。这意味着 Django 将在 angular 有机会处理它之前将表达式评估为空。

谢谢你的帮助,D。

于 2015-07-25T13:41:58.197 回答
0

我创建了一个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. 看看这篇文章。

于 2015-07-25T13:28:39.263 回答