Angularjs Ui EJS 中的路由器参数

Angularjs Ui Router Params in EJS

?

这可能是一个奇怪的问题,但我想知道它是否有可能实现。我从 html 侧向参数传递一个值。使用 $stateParams 获取该值。我对此进行了安慰,当然我得到了价值。有没有办法像我在下面所做的那样将该值传递到 ejs 的末尾?请注意,每次我使用此方法时,都会收到 angular 的注入错误。当我删除我试图添加到 templateUrl 字符串的附加 $stateParams.id 时,错误消失了。所以看起来我显然不能把它传进去。有解决办法吗?

Angular部分

.state('home',{
  url: '/home/:id',
  controller: function($stateParams){
    console.log($stateParams.id);
  },
  templateUrl: '/myRoute/'+$stateParams.id,
});

HTML

<a ui-sref="home({id: 2345})">Click me</a>

假设我的Backend路由是这样设置的

router.get('/myRoute/:id', function(req, res, next) {
  console.log(req.params.id);  //I would like to get my params here pass down from the view
});

我有一种情况,由于奇怪的原因,我需要 angular 状态作为 ejs 文件而不是常规 html 的视图......我能够拉起ejs 通过路由器显示在屏幕上,但没有运气获得我需要的参数。当我尝试控制它时,它在服务器端出现未定义。

发生错误是因为 $stateParam 依赖项在那里不可用(您没有在任何地方注入期望控制器功能,这仅限于控制器功能)。

访问 $stateParams 的最佳方法是,向 return 添加函数 templateUrl 并设置第一个参数 params,这样您就可以访问 $stateParams

.state('home',{
    url: '/home/:id',
    controller: function($stateParams){
       console.log($stateParams.id);
    },
    templateUrl: function(params){
       return '/myRoute/'+params.id;
    }
});