मेरे पास एक ऑब्जेक्ट है जो एक रेस्तरां ऑर्डर का प्रतिनिधित्व करता है:
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;
}
कोणीय कंट्रोलर ऑर्डर में सबमिट होने पर व्यू में एक बटन से एनजी-क्लिक के माध्यम से एक सरणी पर धकेल दिया जाता है:
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])
?
उत्तर:
उत्तर № 1 के लिए 1वहाँ के रूप में क्या आप चाहते हैं के बाद से एक महान तरीका है, नहीं है फायरबेस एफएक्यू:
निम्न-स्तर पर, हम मूल रूप से JSON: स्ट्रिंग्स, नंबर, बूलियन और ऑब्जेक्ट्स के समान डेटा प्रकारों का समर्थन करते हैं (जिसमें बदले में स्ट्रिंग्स, नंबर, बूलियन और अधिक ऑब्जेक्ट होते हैं)।
जिसका मतलब है कि आप डेटा स्टोर कर सकते हैं लेकिन फ़ंक्शंस नहीं। ऐसा लगता है कि एक ही बात को पूरा करने का एक साफ तरीका है कि आप अपनी संपत्ति के रूप में नवीनतम ऑर्डर मूल्य को स्टोर कर सकते हैं order
ऑब्जेक्ट, और आपके हिस्से के रूप में एक विधि है orderService
जब भी मेनू आइटम जोड़े या निकाले जाते हैं, तो इसे अपडेट किया जाता है। वैकल्पिक रूप से, आपने जो सुझाव दिया है उसे करें और ए getOrderValue
कहीं न कहीं, लेकिन यह अभी भी समझ में आता है कि एक सेवा में डाल दिया।
जवाब के लिए 0 № 2
मैं वास्तव में एक ही मुद्दा था। मैं अपने फायरबेस ऑब्जेक्ट में एक विधि जोड़ना चाहता था। नवीनतम एंगुलरफायर डॉक्स में देखने के बाद मैंने पाया कि $ विस्तार बस इतना ही कर सकता है मैंने इसे अभी तक परीक्षण नहीं किया है, लेकिन मुझे लगता है कि यह इसके बारे में जाने का तरीका है।