的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