Angularjs,从控制器

时间:2016-10-05 22:05:55

标签: angularjs

我是angularJS的新手。我使用angularjs来实现一个网站。该网站有两页。第一页列出所有项目,如果用户点击它,它将重定向到详细信息页面。

我的路线配置如下:

var app = angular.module('myApp', ["ngRoute"]);
app.config(function($routeProvider) {
$routeProvider
    .when("/list", {
        templateUrl : "list.html",
        controller  : "listCtrl"
    })
    .when("/detail/:id"){
        templateUrl : "detail.html"
    }
});

在list.html中。我使用ng-repeat显示一个项目列表和一个监听器来监听鼠标点击。

<ul class="list-group">
    <li class="list-group-item" ng-repeat="i in items">{{i.name}}
      <a href="#" ng-click="goToEdit($index)">
        <span class="glyphicon glyphicon-pencil"></span>
      </a>
    </li>
</ul>

我想在ng-click功能中将视图重定向到详细信息。 我试过了$location.path(),但它没有用。

$scope.goToEdit = function(index){
      console.log($location.path());
      $location.path("/detail/" + index);
      console.log($location.path());
}

这种方式不起作用。 即使第二次登录控制台显示location.path()已更改为&#34; /细节/ ID&#34;

如果我在$scope.$apply()之后添加$location.path();那么我将在行动中收到错误。

你有任何解决方案???

由于

1 个答案:

答案 0 :(得分:1)

这可能与使用href="#"有关,这在使用基于散列的路由

时效果不佳

您可以自己设置href并且不需要控制器功能或ng-click

<a ng-href="#/detail/{{$index}}" >

请注意,由于在ng-repeat中使用过滤器或从数组中删除数据,$ index可能会发生变化,因此您应该给每个项目一个唯一的标识符

此外,您没有为第二条路线确定控制器