我想要一个解决方案,通过验证用户是否提交了一些数据,来保持视图和在同一个函数上发布操作。
我的total.js控制器是这样的
# framework
exports.install = (framework) ->
framework.route "/subscribe", subscribe
framework.route "/subscribe", subscribe, ['post']
# subscribe form and action
subscribe = ->
self = this
post = self.post
if post
Subscriber = self.model('subscriber')
Subscriber.save post
self.view "form"问题是,当我只是查看页面(而不是数据)时,post是{},所以它总是进入if。
如果与{} (if post isnt {})相比,条件总是假的,可能是因为self.post不是空对象。
更新
发布于 2014-08-22 20:06:29
您不清楚地了解is/isnt。看看这个例子:
coffee> {} is {}
false令人惊讶?如果您知道is测试是两个变量,则不会引用同一个对象。不完全一样。实际上是同一个对象:
coffee> obj1 = {}
{}
coffee> obj2 = obj1
{}
coffee> obj1 is obj2
true然后,您可以转到==,以测试等效性。但是:
coffee> {} == {}
false很不幸,JavaScript does not provide a easy way to test for 。
在你的情况下,你应该采取一些诡计。比如:
if (i for i in post).length == 0
...或者可能检查某个关键字段的存在:
if 'type' not of post
...发布于 2014-11-25 13:53:38
简单检查:
function some_action_in_controller() {
var self = this;
// self.body is same as self.post
var isEmpty = Object.keys(self.body).length === 0);
self.json({ result: isEmpty });
}https://stackoverflow.com/questions/25433073
复制相似问题