gpt4 book ai didi

javascript - 启用路由时 AngularJS 无法解析 Express render() 中的 View 参数

转载 作者:行者123 更新时间:2023-12-03 10:34:40 25 4
gpt4 key购买 nike

我在 Node-Express-Anuglar 应用程序中使用 Hogan 模板引擎。因为我在 Hogan 模板中使用 Anguar,所以我更改了 Hogan 的分隔符:

app.js

app.locals.delimiters = '{% %}';
app.set('view engine', 'hjs');

因此我可以像这样显示 View 参数(Angular 很常见):

index.hjs

<!DOCTYPE html>
<html data-ng-app="app">
<head>
<title>{% title %}</title>
</head>
<body ng-controller="TestController">
From Angular model: {{model.testProperty}}

我在渲染函数中传递参数:

index.js 在路由目录中:

router.get('/', function(req, res, next) {
res.render('index', { title: 'Example title' });
});

在这种情况下,一切正常,因此 {% title %} 解析为 Example title ,而 {{model.testProperty}} 解析为我的 Controller 的正确值。

当我在 Angular 端添加路由时出现问题:

module.config(['$routeProvider', '$locationProvider',
function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});

$routeProvider.
when('/', {
templateUrl: '../diary/diary.html',
controller: 'TestController'
}).
when('/promoted', {
templateUrl: '..diary/promoted-diary.html',
controller: 'PromotedController'
}).
otherwise({
redirectTo: '/'
});
}]
);

因为 变量 {% title %} 呈现为 {% title %} (因此未对其进行评估) 。整个 Angular 的东西,例如。 {{ model.testProperty }} 的工作方式与以前一样,因此它可以正确解析为 Controller 中的值。

最佳答案

我认为你在这里错过了一个技巧。如果您研究一些流行的 MEAN 种子项目,例如 MEAN.ioMEAN.JS ,Express用作REST引擎,为AngularJS在前端渲染、路由、数据绑定(bind)方面提供API。

所以我建议你从后端发送 JSON 数据:

router.get('/', function(req, res, next) {
res.json('index', { title: 'Example title' });
});

使用 Angular ngResource要使用来自 API 的数据,无论如何,您都会在前端获得路由器,它将处理 View 身份验证和授权,显示逻辑。 AngularJS拥有丰富的渲染和双向绑定(bind)功能,尝试使用它。如果您需要更详细的答案,请告诉我。

注意:您甚至可以使用纯 HTML 来执行此操作,而无需使用任何模板引擎。简单实现请看here

关于javascript - 启用路由时 AngularJS 无法解析 Express render() 中的 View 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com