我对Angular很新,但是我的第一个应用程序很好。这非常复杂,所以我包含了一个简单的例子来解释我的问题。使用Angular属性装饰纯色HTML
我有一个这样的Angular模板;
<html>
<head>
...
</head>
<body ng-controller="MyController">
<h1>My Template</h1>
<ol id="menu">
<li ng-repeat="section in sections" ng-click="goTo($index)">{{section.name}}</li>
</ol>
<div id="wrapper">
<?php echo $html; ?>
</div>
</body>
</html>
这个想法是,有序列表将像菜单一样显示当前部分并隐藏所有其他部分。我的PHP脚本从现有的HTML中创建部分,看起来像这样;
<section>
<h1>Page 1</h1>
<p>Some text here</p>
</section>
<section>
<h1>Page 2</h1>
<p>Text for page 2</p>
</section>
我想以某种方式使用Angular本身执行以下操作;
- 角的标记添加到普通HTML
- 从每节的第一个H1标签内获取文本,并用它来填充scope.sections
我想最终的结果会是什么样子这个;
<html>
<head>
...
</head>
<body ng-controller="MyController">
<h1>My Template</h1>
<ol id="menu">
<li ng-repeat="section in sections" ng-click="goTo($index)">{{section.name}}</li>
</ol>
<div id="wrapper">
<section ng-if="currentSection == 1">
<h1>Page 1</h1>
<p>Some text here</p>
</section>
<section ng-if="currentSection == 2">
<h1>Page 2</h1>
<p>Text for page 2</p>
</section>
</div>
</body>
</html>
我意识到,我可以做一些PHP字符串替换要做的第一部分,但我想知道是否有一个角度的解决方案在实际项目中,PHP更换是不可行的。
任何指针将不胜感激!
嗨米克尔,由于项目的性质,我必须从html文件注入原始标记到模板中。不幸的是,我无法指定这些部分是作为JSON格式化对象提供的;-( – Tom
您是否拥有HTML的控制权?无论当前是循环浏览各个部分并输出 div,只需将json_encoded作为JS变量 如果你完全无法控制任何HTML,我可以提供一些代码(使用jQuery),它将解析HTML并将其添加到AngularJS应用程序,那么你很乐意与我的其余部分 –
@Tom嘿,汤姆,我刚刚更新了一些jQuery的填充$ scope.sections的答案,但老实说,这是做错的方式,你打算如何添加这个ng - 如果对HTML没有控制权吗? –