Angular 1.6.9,UI-Router 1.0.15
目标是使用解析器返回绑定到Angular组件的值。我有两个第三方示例,一个是UI路由器网站上的Hello Galaxy示例,另一个是Codepen中的一个简单案例。
https://plnkr.co/edit/XdKQmifZ69pcYeBnQ945?p=preview
请在Angular JS UI-Router State Params上查看David(@StretchKids)上的笔CodePen。
然而,无论我如何剪切和粘贴,我都无法在我的Codepen项目中获得解析器功能来查看传递的对象。对象配置位于组件下的fred.js和ethel.js中。传递对象的按钮位于index.pug文件中(Codepen也使index.html可用)。
程序进入状态并执行解析器功能。但是$ stateParameters和$ transition $ .params()都是空的。啊!
该代码段不会执行。
.module("MyApp")
.component("fred", {
templateUrl: "components/fred.html",
bindings: { name: "@" },
controller: function($stateParams){
var vm = this;
vm.activeId = $stateParams.id;
vm.resolveId = this.name;
}
})
.config(function($stateProvider) {
$stateProvider.state({
name: "fred",
url: "/fred",
component: "fred",
resolve: {
name: function($transition$, $stateParams) {
;
return $stateParams.id;
}
}

md-button(ng-repeat="name in ac.lvl1" ui-sref-active="active" ui-sref="{{name}}({id: 'bar'})") {{name}}

这是CodePen项目的链接:https://codepen.io/StretchKids/project/editor/AJPvQm#
HELP !!!
谢谢,
大卫
答案 0 :(得分:0)
经过大量的搜索和测试后,我找到了答案。首先,我打破了UI-Router Hello Galaxy 示例。搜索所述传递的参数必须包含在URL中。
这解释了为什么 Hello Galaxy 示例传递了人的id,然后搜索了人物对象的数组,而不是只传递已经拥有的人物对象。绝对是在谷仓周围很远的地方!
我们需要在状态定义中添加一个params对象来提前声明$ stateParams变量。
{
name: "person",
url: "/{person.id}",
component: "person",
params:{data:null},
resolve: {
person: function($stateParams,$transition$) {
return $stateParams.data.person;
}
}
}
https://ui-router.github.io/guide/states#state-properties
https://ui-router.github.io/ng1/docs/1.0.14/interfaces/state.statedeclaration.html#params
http://benfoster.io/blog/ui-router-optional-parameters
这可能是小组中最好的:https://ui-router.github.io/guide/ng1/route-to-component