我将使用以下网址制作网络应用程序(SPA)
我将以这种方式将数据(作为表单)发送到后端ExpressJS AngularJS POST(检查答案) 这将是简单的CRUD。
但是我想知道如何从后端显示数据? 例如:
我将运行应用程序
var Partner = require('../model/partners');
router.get('/', function (req, res) {
Partner.find({}, function (err, partnerList) {
if (err) throw err;
res.render('campaign', {
partnerList: partnerList
});
});
});
我应该如何显示数据(partnerList
)。也许这样?
- each item in partnerList
= item.name
或许还有另一种更好的角度来在视图中显示数据?我之所以要问,因为我以后要从items
删除或更新partnerList
(CRUD操作)。这可能是个问题,因为我必须将item._id
作为参数发送给角度函数?
例如,如果我要添加按钮以删除记录:
- each item in partnerList
= item.name
button(type='remove' ng-click="sub('#{item._id}')")
script.
app.controller('view1Ctrl', function($scope, $http) {
$scope.sub = function(id) {
$http.post('/',id).
success(function(data) {
console.log("posted successfully");
}).error(function(data) {
console.error("error in posting");
})
}
});
可能它不会正常工作
答案 0 :(得分:0)
我认为首选方法是设置从快速到专门渲染JSON的第二条路线,然后使用angular的$http
方法获取该数据并在控制器中使用它。如果你想用一个路由来做,你可以将JSON数据作为字符串传递给服务器端的视图,但它可能会有点不守规矩。
// app.js
...
partnerList: JSON.stringify(partnerList);
...
// index.jade
div(ng-repeat="item in partnerList")
p {{ item.name }}
button(type='remove', ng-click="sub(item._id)")
...
script.
app.controller('view1Ctrl', function($scope, $http) {
$scope.partnerList = JSON.parse(#{partnerList});
...
编辑要使用JSON字符串示例,您必须使用Unbuffered Code语法进行渲染。但我不确定你会如何在script.
区块内做到这一点。要改为分别提供服务JSON的路由,请将服务器路由更改为:
var Partner = require('../model/partners');
router.get('/', function (req, res) {
res.render('campaign');
});
router.get("/partner-list", function(req, res) {
Partner.find({}, function (err, partnerList) {
if (err) throw err;
res.json({ partnerList: partnerList });
});
});
然后,您的角度代码将使用/partner-list
查询$http.get()
路径。
script.
app.controller('view1Ctrl', function($scope, $http) {
$http.get("/partner-list").then(function(result) {
$scope.partnerList = result.data.partnerList;
});
...
});
答案 1 :(得分:0)
如前所述,从我的观点来看,我倾向于将后端所需的最少数据发送到客户端,但这取决于您的基础架构和并发用户。
示例1 :
实际案例:
{"status": "ok"}
这样的简单json进行响应。如果前端重新开始,请使用客户端在POST阶段发送到后端的文本字符串修改DOM,但不要再发送带有此(例如)500个字符注释的所有HTML。{"status":"error"}
回复,请修改DOM以让用户知道他的评论有什么问题(更多指定的json消息{"status":"error", "data":"you comment is bigger than 500 chars"}
)问题:
优点:
示例2:
我总是使用第一个例子。希望这对您的问题有所帮助。