gpt4 book ai didi

javascript - Angular-UI-Router:ui-sref 不使用参数构建 href

转载 作者:数据小太阳 更新时间:2023-10-29 04:01:26 26 4
gpt4 key购买 nike

我有一个 HTML 页面,一旦加载到用户的浏览器中,“列表”状态就会被激活,并且“列表”部分由 Angular 提取并填充服务器列表。

每个服务器都有一个“详细信息”链接,用于指定该服务器的“详细信息”状态。

<td><a ui-sref="details({ serverName: '{{server.name}}' })">Details</a></td>

渲染时,“ui-sref”会根据路由及其可选参数生成预期的“href”url。

<a ui-sref="details({ serverName: 'SLCMedia' })" href="#/details/SLCMedia">Details</a>

单击时它按预期工作,“详细信息”部分被拉取,并在分配给该状态的 Controller 中拉取具有指定名称的服务器。

我遇到的问题是,一旦加载了“详细信息”部分,它也有一个“ui-sref”到“编辑”状态。

   <a ui-sref="edit({ serverName: '{{server.name}}' })">
<button class="btn btn-lg btn-labeled btn-primary">
<span class="btn-label icon fa fa-edit"></span>
Edit
</button>
</a>

但是当加载这个部分时,'ui-sref' 没有生成正确的 'href' url。

   <a ui-sref="edit({ serverName: 'SLCMedia' })" href="#/edit/">
<button class="btn btn-lg btn-labeled btn-primary">
<span class="btn-label icon fa fa-edit"></span>
Edit
</button>
</a>

如您所见,“href”网址是“#/edit/”,而不是预期的“#/edit/SLCMedia”。它必须是我所缺少的简单东西。状态的变化和它有关系吗?

这里是页面的所有定义“状态”。

// Create the Angular App to rule the Server Management Page
var serverApp = angular.module('serverApp', [
'ui.router',
'serverControllers',
'utilitiesService'
]);

serverApp.config(function ($stateProvider, $urlRouterProvider) {
// For any unmatched url, redirect to /state1
$urlRouterProvider.otherwise("/list");

// Now set up the states
$stateProvider
.state('list', {
url: '/list',
templateUrl: '/views/pages/servers/list.html',
controller: 'serverListCtrl'
})
.state('details', {
url: '/details/:serverName',
templateUrl: '/views/pages/servers/details.html',
controller: 'serverDetailsCtrl'
})
.state('create', {
url: '/create',
templateUrl: '/views/pages/servers/create.html'
})
.state('edit', {
url: '/edit/:serverName',
templateUrl: '/views/pages/servers/edit.html',
controller: 'serverEditCtrl'
})
});

这是我的 Controller

var serverControllers = angular.module('serverControllers', ['utilitiesService']);

serverControllers.controller('serverListCtrl', function ($scope, $http) {
$http.get('/servers/getList').success(function (data) {
$scope.serverList = data;
});
});

serverControllers.controller('serverDetailsCtrl', function ($scope, $stateParams, $http) {
var serverName = $stateParams.serverName;

$http.get('/servers/getServerByName/' + serverName).success(function (data) {
$scope.server = data;
});
});

serverControllers.controller('serverEditCtrl', function ($scope, $stateParams, $http, $state, showAlertMessage) {
var serverName = $stateParams.serverName;

$http.get('/servers/getServerByName/' + serverName).success(function (data) {
$scope.server = data;
});

$scope.server.submitForm = function (item, event) {
console.log("--> Submitting Server Update");

//TIMDO: Verify all required fields have been included

var responsePromise = $http.post("/servers/postEdit", $scope.server, {});
responsePromise.success(function(dataFromServer, status, headers, config) {
showAlertMessage({
type: 'success',
title: 'Success',
message: 'Server information updated'
});

$state.go('clear');
});
responsePromise.error(function(data, status, headers, config) {
showAlertMessage({
type: 'error',
title: 'Success',
message: 'Server information updated'
});
});
}
});

最佳答案

嗯,我可能误解了你的问题,但我发现你的代码外观和我的代码外观之间至少有一个明显的区别。

我的 angular-ui-router 链接看起来像这样:

<a ui-sref="reps-show({ id: rep.id })">{{rep.name}}</a>

不同之处在于 rep.id 周围没有大括号。所以我想知道是否改变这个

<td><a ui-sref="details({ serverName: '{{server.name}}' })">Details</a></td>

对此

<td><a ui-sref="details({ serverName: server.name })">Details</a></td>

可能会为你做点什么。

可能不是,但这是我想到的第一件事。

关于javascript - Angular-UI-Router:ui-sref 不使用参数构建 href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28574053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com