gpt4 book ai didi

angularjs - ui-路由器。从对象/函数获取状态名称

转载 作者:行者123 更新时间:2023-12-03 06:56:16 25 4
gpt4 key购买 nike

我想知道,有没有办法用对象或函数引用 View 中的状态?

只是为了将 View 与状态定义分离。例如。如果我更改状态名称,我不必在 View 中的所有地方更改它。

最佳答案

可以在此处找到如下所述的一个解决方案,作为工作 plunker

在此示例中,我们将为某些实体(例如员工)定义状态,例如:

  1. 列表 View 和
  2. 详细 View 。

让我们使用一些变量entityName来发挥解耦命名的作用:

var entityName = "employee";

$stateProvider
.state(entityName, {
url: '/' + entityName,
views: {
...
}})

.state(entityName + '.detail', {
url: '/{{Id}}',
views: {
...
}});

从列表导航到详细 View (正如我们所见,没有使用明确的“员工”名称):

<a ui-sref="{{detailLink(item)}}" >{{item.Name}}</a>

接下来我们必须定义detailLink(item)。我们将直接在 Controller 中执行此操作,但它也可以是一些 ListModel 实例,封装更多操作(分页、排序),包括detailLink

controller:['$scope','$state',
function ( $scope , $state){

$scope.detailLink = function (item){

// here we get the employee in run-time
var currentState = $state.current.name;
var sref = currentState + '.detail({Id:' + item.Id + '})';
return sref;
};
}],

就是这样。它可能会更复杂......可以找到并运行完整的示例代码(作为状态定义附在下面) here

.config(['$stateProvider',
function( $stateProvider) {

var entityName = "employee";

$stateProvider
.state(entityName, {
url: '/' + entityName,
views: {
body: {
template: '<div>' +
' <h2>List View</h2> ' +
' <ul ng-repeat="item in items"> ' +
' <li><a ui-sref="{{detailLink(item)}}" >{{item.Name}}</a>' +
' </li></ul>' +
' <h2>Detail View</h2> ' +
' <div ui-view="detail"></div>' +
'</div>',
controller:['$scope','$state',
function ( $scope , $state){

$scope.items = [{Name : "Abc", Id : 0}, {Name : "Def", Id : 1}];

$scope.detailLink = function (item){

var currentState = $state.current.name;
return currentState + '.detail({Id:' + item.Id + '})';
};
}],
}
}})
.state(entityName + '.detail', {
url: '/{{Id}}',
views: {
detail: {
template: '<div>' +
' <label>{{item.Name}} ' +
' <input ng-model="item.Name"}}" type="text" />' +
' <div>current state name: <i>{{state.name}}<i></div> ' +
'</div>',
controller:['$scope','$stateParams','$state',
function ( $scope , $stateParams , $state){
$scope.state = $state.current
$scope.item = $scope.items[$stateParams.Id];
}],
}
}});

}])

关于angularjs - ui-路由器。从对象/函数获取状态名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23590799/

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