我正在尝试使用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。
答案 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
。