角度变化视图url参数

时间:2016-08-23 21:58:10

标签: javascript angularjs

我正在尝试使用url参数导航到angularjs应用中的不同视图。我尝试过这样的事情

<a href="" ng-click="goToDevice(treeCurrentNode.uuid)">{{treeCurrentNode.displayName}}</a>

JS:

$location.path('/devices').search({resourceView: 'deviceDetailsView'})
                .search({explorerView: 'table'}).search({type: 'Device'}).search({uuid: uuid});

使用$stateProvider

这样的事情
<a ui-sref="Devices({resourceView: 'deviceGroupView', explorerView: 'table', type: 'Device', uuid: treeCurrentNode.uuid})">{{treeCurrentNode.displayName}}</a>

我的状态提供程序代码如下所示:

.state('Devices', {
    url: "/devices",
    params: {
        resourceView: null,
        explorerView: null,
        type: null,
        uuid: null
    },
    templateUrl: "app/main/devices/module/views/devices.html",
    controller: "DevicesExtendedCtrl",
    reloadOnSearch: false,

我还尝试使用$stateProvider这样的$state.go

<a href="" ng-click="go(treeCurrentNode.uuid)">{{treeCurrentNode.displayName}}</a>

JS:

$state.go('Devices', {resourceView: 'deviceDetailsView', explorerView: 'table', type: 'Device', uuid: uuid})

但参数未添加到网址中。当我不尝试添加这样的参数时,我被带到了网址:

$location.path('/devices')

默认包含resourceView和explorerView参数,但不包含类型和uuid。

3 个答案:

答案 0 :(得分:0)

请尝试更改stateprovider代码,如下所示,看看它是否有效。这对我有用。

.state('Devices', {
    url: "/devices/:resourceView/:explorerView/:type/:uuid",
    params: {
        resourceView: null,
        explorerView: null,
        type: null,
        uuid: null
    },
    templateUrl: "app/main/devices/module/views/devices.html",
    controller: "DevicesExtendedCtrl",
    reloadOnSearch: false,

答案 1 :(得分:0)

我假设您使用的是ui-router,因此您应该在$ stateProvider中定义url属性。它看起来像这样:

$stateProvider
    .state('contacts.detail', {
        url: "/contacts/:contactId",
        templateUrl: 'contacts.detail.html',
        controller: function ($stateParams) {
            // If we got here from a url of /contacts/42
            expect($stateParams).toBe({contactId: "42"});
        }
    })

在这个例子中,我们定义了contactId参数。 /contact/123应与您的网址匹配。

使用ui-router定义参数时,可以使用$ stateParams.contactId。

您可以在https://github.com/angular-ui/ui-router/wiki/URL-Routing#url-parameters

找到更多详细信息

答案 2 :(得分:0)

我正在调用$location.search()错误,我将其更改为$location.search('uuid', uuid)并且有效,无需修改stateProvider