2016-01-06 97 views
0

出于某种原因,我的变量“navitem.route”未显示在视图中,当我尝试将它用作函数中的参数时。在生成的html中,变量显示为“navitem.route”而不是变量的值,但是何时将它用于它显示的大致花括号之间的href之间。AngularJs变量不在视图中显示

$scope.navitems = [ 
    { 
     title: "Products",  
     route: "#/account/" + $window.sessionStorage.getItem('account') + "/products" 
    }, 
    { 
     title: "Settings", 
     route: "#/account/" + $window.sessionStorage.getItem('account') 
    } 
]; 

$scope.isActive = function (viewLocation) { 
    return viewLocation === $location.path(); 
}; 

在我看来:

在我的控制器

<ul class="nav nav-pills nav-stacked"> 
    <li class="nav-item" data-ng-repeat="navitem in navitems"> 
     <a class="nav-link" href="{{navitem.route}}" data-ng-class="{ active: isActive(navitem.route)}" >{{navitem.title}}</a> 
    </li> 
</ul> 

生成的HTML:

<ul class="nav nav-pills nav-stacked"> 
    <!-- ngRepeat: navitem in navitems --> 
    <li class="nav-item ng-scope" data-ng-repeat="navitem in navitems"> 
     <a class="nav-link ng-binding" href="#/account/2/products" data-ng-class="{ active: isActive(navitem.route)}">Products</a> 
    </li> 
    <!-- end ngRepeat: navitem in navitems --> 
    <li class="nav-item ng-scope" data-ng-repeat="navitem in navitems"> 
      <a class="nav-link ng-binding" href="#/account/2" data-ng-class="{ active: isActive(navitem.route)}">Settings</a> 
    </li> 
    <!-- end ngRepeat: navitem in navitems --> 
</ul> 

我怎样才能在一个函数中使用 “navitem.route” 值?

由于提前,

+2

'navitem.route'不会对view..but它将传递给'isActive'功能填充.. –

回答

0

navitem.route值以#开始。 location.path()返回的url不会有#。所以isActive()永远不会返回true。从路线中删除#号。

控制器:

$scope.navitems = [ 
{ 
    title: "Products",  
    route: "/account/" + $window.sessionStorage.getItem('account') + "/products" 
}, 
{ 
    title: "Settings", 
    route: "/account/" + $window.sessionStorage.getItem('account') 
} 
]; 

鉴于使用ngHref代替HREF:

<a class="nav-link" ng-href="#/{{navitem.route}}" data-ng-class="{ active: isActive(navitem.route)}" >{{navitem.title}}</a> 
+0

工作,谢谢! – Peter

0

您需要使用NG-HREF,像这样:

<ul class="nav nav-pills nav-stacked"> 
    <li class="nav-item" data-ng-repeat="navitem in navitems"> 
     <a class="nav-link" ng-href="{{navitem.route}}" data-ng-class="{ active: isActive(navitem.route)}" >{{navitem.title}}</a> 
    </li> 
</ul> 
+0

这是行不通的。它的结果是Products Peter

+0

对不起,像这样:ng-href =“{{navitem.route}}” – Lax

+0

啊......这很有道理:)谢谢! – Peter