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.
我有以下标记:
<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.