Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使列表干燥_Javascript_Angularjs_Html Lists_Angular Ng If - Fatal编程技术网

Javascript 如何使列表干燥

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

这是我第一次在stackoverflow上发布问题,如果格式不正确,很抱歉

我一直在角度上遇到同样的问题,我相信有一个非常简单的方法来解决它,但由于某种原因我无法解决它。我将发布一个例子,并在下面给出解释

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