【问题标题】:Change the url without reloading the controller in Angularjs更改 url 而无需在 Angularjs 中重新加载控制器
【发布时间】:2015-05-22 18:02:48
【问题描述】:

最初,我在表中显示所有用户名。一旦用户选择了任何一个名称,我就会以所选用户作为参数调用 LoadData 方法。我正在更改 url #/Trades/User/User1 并在 User1 下附加详细信息。我的要求是 1)在 LoadData 方法中,我想根据选择将 url 更改为 #/Trades/User/User1 或 #/Trades/User/User2 2)它应该更新数据并反映在视图中,但是它不应该重新加载控制器。

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
};
    });

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    你可以试试这个。我目前在我的项目中使用它来做一些非常相似的事情。 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]);
        };
    }])
    

    【讨论】:

    • 它会维护浏览器历史记录,即返回按钮是否有效
    • 老实说,我看到它有时有效,有时无效,但是我使用它的方式,可能是我的其他代码是罪魁祸首。我正在使用它来强制更改模式 URL,而不必为模式是否存在而维护单独的状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多