Pra*_*tta 15 angularjs typescript angular-ui-router
我正在使用ui-router,我正在解析一些我希望将解决方案注入我的自定义指令的数据,下面是代码我是怎么做的
module portal {
$stateProvider.state('portal', {
url: '/demo',
template: tpl.html,
abstract: true,
resolve: {
demoResolve:function(){
return 'foo';//here i am returing a promise
}
});
}
module portal.directives{
export class demoDirevtive{
static $inject =['demoResolve'];
constructor(demoResolve){
console.log(demoResolve)
var directive: ng.IDirective = {};
directive.link = (scope, element, attrs, ctrl) => {
};
directive.restrict = "EAC";
return directive;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到了未知提供商的错误
从阅读他们的代码看起来似乎不太可能,他们有一个局部变量,他们注入你在视图上定义的控制器,它也不能通过$ inject服务访问.
最简单的解决方案是将其放在控制器的范围内,然后在指令中使用它.
您还可以创建一个真实的服务,它将保存您应用程序中的所有已解析对象,即:
resolve: {
demoResolve: ['myResolvingService', function(resolver) {
resolver.myValue = 'Foo';
return 'Foo';
}]
Run Code Online (Sandbox Code Playgroud)
我知道这不是你想要的,但它看起来并不像是支持它.
以下是如何通过控制器将resolve值传递给指令的示例:
.state('something.edit', {
url: '/:id',
template: '<something-edit title="title"></something-edit>',
controller: function($scope, $title){
$scope.title = $title;
},
resolve: {
$title: ()=>{
return 'Something Edit';
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7571 次 |
| 最近记录: |