如何将自定义数据从ui-router中的视图传递到某个状态?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将自定义数据从ui-router中的视图传递到某个状态?相关的知识,希望对你有一定的参考价值。

我正在使用$stateProvider进行路由配置。我想利用他们提供的自定义数据将一些自定义数据从一个部分页面传递到另一个部分页面(在ng-click上)。

这是我到目前为止最好的:

将自定义数据附加到状态对象

您可以将自定义数据附加到状态对象(我们建议使用数据属性以避免冲突)。

// Example shows an object-based state and a string-based state 
var contacts = { 
    name: 'contacts',
    templateUrl: 'contacts.html',
    data: {
        customData1: 5,
        customData2: "blue"
    }
} 
$stateProvider
    .state(contacts)
    .state('contacts.list', {
        templateUrl: 'contacts.list.html',
        data: {
            customData1: 44,
            customData2: "red"
        }
    }) 

通过上面的示例,您可以访问如下数据:

function Ctrl($state){
     console.log($state.current.data.customData1) // outputs 5;
     console.log($state.current.data.customData2) // outputs "blue";
 }

Source

假设我有另一个名为customers的状态,它有自己的模板和控制器。如何在客户控制器/视图中更改联系人状态数据对象的值?即:我想改变这个:

data: {
            customData1: 44,
            customData2: "red"
        } 

对此:

data: {
            customData1: 100,
            customData2: "green"
        } 

任何指针或样品将不胜感激!

修改 - 我让它自己工作,这是如何:在控制器上(例如:customerCtrl),您可以按名称获取联系人的状态并进行所需的更改 - 例如更新自定义数据对象的属性值,如下所示://按名称获取状态并更改自定义数据的值属性

 $state.get('contacts').data.customData1= 100;
 $state.go('contacts');// then you can make a go to that state.

我希望这会对某人有所帮助。

答案

我让它自己工作,这是如何。在控制器(例如:customerCtrl)上,您可以按名称获取联系人的状态(https://github.com/angular-ui/ui-router/wiki/Quick-Reference#statename并查找$ state.get([stateName])) 获得状态后,您可以进行所需的更改 - 例如更新自定义数据对象的属性值,如下所示:

//get the state by name and change the value of custom data property 
 $state.get('contacts').data.customData1= 100;
  // then you can go to that state.
 $state.go('contacts');

我希望这会对某人有所帮助。

另一答案

如果您正在尝试读取当前状态的自定义数据,则可以轻松将其读作$state.current.data.customData1 = 100;

以上是关于如何将自定义数据从ui-router中的视图传递到某个状态?的主要内容,如果未能解决你的问题,请参考以下文章

Angular ui-router - 如何访问从父模板传递的嵌套命名视图中的参数?

将自定义单元格从一个视图控制器传递到另一个视图控制器

将自定义ListView项目传递给Android中的其他活动

如何将自定义对象从异步操作过滤器传递到 ASP.net 核心中的控制器?

如何使用 BigQuery 连接器将自定义查询从谷歌数据工作室传递到 BigQuery?

如何将自定义数组保存/重新加载到 plist