Javascript 如何使列表干燥
这是我第一次在stackoverflow上发布问题,如果格式不正确,很抱歉 我一直在角度上遇到同样的问题,我相信有一个非常简单的方法来解决它,但由于某种原因我无法解决它。我将发布一个例子,并在下面给出解释Javascript 如何使列表干燥,javascript,angularjs,html-lists,angular-ng-if,Javascript,Angularjs,Html Lists,Angular Ng If,这是我第一次在stackoverflow上发布问题,如果格式不正确,很抱歉 我一直在角度上遇到同样的问题,我相信有一个非常简单的方法来解决它,但由于某种原因我无法解决它。我将发布一个例子,并在下面给出解释 <div class="jmc-navbar-content" ng-if="!vm.isHidden" ng-swipe-up="vm.toggleNav()"> <!-- contains the navigation/page links --> <ul c
<div class="jmc-navbar-content" ng-if="!vm.isHidden" ng-swipe-up="vm.toggleNav()">
<!-- contains the navigation/page links -->
<ul class="jmc-navbar-menu">
<li class="active"><a class="noPreventDefault" ng-click="vm.toggleNav()" ng-href="#home">Home</a></li>
<li><a class="noPreventDefault" ng-click="vm.toggleNav()" ng-href="#portfolio">Portfolio</a></li>
<li><a class="noPreventDefault" ng-click="vm.toggleNav()" ng-href="#about">About</a></li>
<li><a class="noPreventDefault" ng-click="vm.toggleNav()" ng-href="#contact">Contact</a></li>
<li><a class="noPreventDefault" ng-click="vm.toggleNav()" ng-href="#/">View source on GitHub</a></li>
</ul>
</div>
虽然这是可行的,但我不喜欢重复我自己的所有
标记,这些标记需要具有相同的类和属性。我可以想出多种方法来使用javascript实现这一点,但它们似乎都有点“黑客”。在Angular或Javascript中有什么简单的方法可以做到这一点吗
感谢您抽出时间回复,欢迎您提出任何建设性的批评 首先,您可以使用路径和占位符(显示)创建
对象的数组
:
然后您可以使用指令:
<li ng-class="{ 'active': $first }" ng-repeat="link in vm.links"><a class="noPreventDefault" ng-click="vm.toggleNav()" ng-href="{{link.path}}">{{link.display}}</a></li>
在html中使用ng repeat
由于您的第一个li将类设置为“活动”,您需要使用$index
<div ng-repeat = 'aVal in aVals'>
<li ng:class="{true:'active', false:''}[$index == 0]"><a class="noPreventDefault" ng-click="vm.toggleNav()" ng-href="aVal.hrefVal">{{aVal.name}}</a></li>
</div>
你为什么不用ng repeat?@Jessemcintos你查过我的答案了吗?你不是在使用控制器作为语法吗?
?是的,谢谢你的回答,你是对的,我正在使用控制器作为语法。我认为你不需要在ng href中使用{{}语法?它应该是直接的ng href='link.path'谢谢,您建议我将vm.links
对象放入服务还是有其他方法?我确信我以后需要在另一个控制器中使用该对象。如果你在另一个控制器中使用它,是的,最好将其存储在服务中。我很高兴它对@Jesse有所帮助
var app = angular.module("myApp", []);
angular
.module('myApp')
.controller('myCtrl', ['$scope',
function ($scope) {
$scope.aVals= [
{ hrefVal: '#home', name='Home'},
{ hrefVal: '#portfolio', name='Protfolio'},
// so on
];
}]);
yes ,you can use ng-repeat.I think it satisfy your problem. and If then href's are states then angular provide ui-sref. This way you can implement.
Can you check this attachement .
"http://jsfiddle.net/soumyagangamwar/789Ks/77/"
If it satisfy you requirement then don't forget to vote.