【问题标题】:Angularjs Ui Router Params in EJSEJS中的Angularjs Ui路由器参数
【发布时间】:2023-04-01 12:19:01
【问题描述】:

?

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

角部分

.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>

假设我的后端路由是这样设置的

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
});

由于奇怪的原因,我需要将角度状态作为 ejs 文件而不是常规 html 来查看...我能够通过路由器将 ejs 拉到屏幕上,但没有运气得到我需要的参数。当我尝试对其进行控制台时,它在服务器端出现 undefined。

【问题讨论】:

    标签: javascript angularjs express angular-ui-router ejs


    【解决方案1】:

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

    访问$stateParams 的最佳方法是添加函数以返回templateUrl 并具有第一个参数params,这将使您可以访问$stateParams

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

    【讨论】:

    • 我不敢相信我什至没有想到这一点...大声笑非常感谢您提供的信息。
    • @VietLe np,发生这种情况的人.. 尽可能接受答案。谢谢和欢呼:-)
    • 哈哈当然,它告诉我我必须再等5分钟才能做到这一点。
    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多