的JavaScript对象的方法工作,我有一个代表餐厅为了一个目标:如何Angularfire
function order() {
this.customer_name = ''
this.menu = // menu object
}
扩展了业务逻辑的一些对象的方法,如:
order.prototype.value = function() {
var total = 0;
for (var i = 0; i < this.menu.length; i++) {
// calculate the order value
}
return total;
}
在角控制器订单在提交时(通过在视图中的按钮点击ng键)被推送到数组上:
var ref = new Firebase('https://myfirebase.firebaseio.com');
$scope.orders = [];
angularFire(ref, $scope, 'orders');
$scope.currentOrder = orderService;
$scope.submitOrder = function() {
$scope.orders.push($scope.currentOrder);
};
一旦将订单推入数组中,像orders[0].customer_name
这样的属性可以工作,但类似orders[0].value()
的方法则不会。
Firebase/Angularfire只会同步JSON似乎是合理的,但是有没有办法可以让我保留与order
对象一起的订单相关逻辑,即无需编写$scope.getOrderValue(orders[0])
?
如果你真的想这样做你什么建议,不过,你可以使用函数构造函数(即新功能(订单[0] .value的)())。只要确保没有人不信任它就能修改对象的值属性(例如运行恶意函数)。 – bennlich
是啊,这是一个很好的点,无论价值是如何计算或显示在用户的订单价值的“版本”应该不会对订单的真正价值最终的权威,因为它可以操控客户端。 – hiattp