2015-05-22 3 views
0

Первоначально я показываю все имена пользователей в таблице. Как только пользователь выбрал какое-либо имя, я вызываю метод LoadData с выбранным пользователем в качестве параметра. Я изменяю url #/Trades/User/User1 и добавляю детали под User1. Мое требование: 1) В методе LoadData я хочу изменить URL-адрес как #/Trades/User/User1 или #/Trades/User/User2 на основе выбора 2) Он должен обновить данные и отобразить их в поле зрения, но он не должен перезагружать контроллер.Измените URL-адрес, не перезагружая контроллер в Angularjs

HTML

<div ng-app="myApp" ng-controller="myCtrl"> 
<table> 
    <tr ng-repeat-start="val in data.Titles" class="h" ng-click="LoadData(val.title)"> 
     <td colspan="2" ng-hide="val.title == undefined">{{val.title}}</td> 
    </tr> 
    <tr ng-repeat="con in val.details"> 
     <td>{{con.portfolio}}</td> 
     <td>{{con.status}}</td> 
    </tr> 
    <tr ng-repeat-end> 
     <td colspan="2">Load More</td> 
    </tr> 
</table> 
</div> 

Код

angular.module("myApp", []) 
    .controller("myCtrl", ["$scope", function ($scope) { 

     $scope.data = {"Titles":[{title:"User 1",  
      details: [{portfolio: "Microsoft", status:"Active"},{portfolio:"IBM", status:"Inactive"}] 
    }, {title:"User 2", 
     details: [{portfolio: "Yahoo", status:"Inactive"},{portfolio: "Google", status:"Active"}] 
    }]}; 

$scope.LoadData = function(id) { 
    Change the url as #/Trades/Author/User1 
    Load the details of the User1 
}; 
    }); 

ответ

0

Вы могли бы попробовать это. Я использую это в моем проекте для чего-то очень похожего. http://joelsaupe.com/programming/angularjs-change-path-without-reloading/

app.run(['$route', '$rootScope', '$location', function ($route, $rootScope, $location) { 
    var original = $location.path; 
    $location.path = function (path, reload) { 
     if (reload === false) { 
      var lastRoute = $route.current; 
      var un = $rootScope.$on('$locationChangeSuccess', function() { 
       $route.current = lastRoute; 
       un(); 
      }); 
     } 
     return original.apply($location, [path]); 
    }; 
}]) 
+0

Будет ли поддерживать историю браузера IE, работает ли кнопка назад –

+0

Честно говоря, я видел, что это работает иногда, а иногда нет, но как я использую это, может быть, что мой другой код это преступник. Я использую это для изменения модальных URL-адресов, не имея необходимости поддерживать отдельные состояния при наличии модальности. – jusopi

Смежные вопросы