दिलचस्प चीजों में से एक एंगुलरजेएस कर सकता है एक विशेष डेटाबाइंडिंग अभिव्यक्ति के लिए एक फ़िल्टर लागू करें, जो लागू करने के लिए एक सुविधाजनक तरीका है, उदाहरण के लिए, एक मॉडल के गुणों की संस्कृति-विशिष्ट मुद्रा या दिनांक स्वरूपण। गुंजाइश पर संपत्तियों की गणना करना भी अच्छा है। समस्या यह है कि इन सुविधाओं में से कोई भी दो-तरफ़ा डेटाबाइंडिंग परिदृश्यों के साथ काम नहीं करता है - केवल एक-तरफ़ा डेटाबाइंडिंग इस दायरे से दृश्य तक। यह एक अन्यथा उत्कृष्ट पुस्तकालय में एक शानदार चूक लगता है - या मैं कुछ याद कर रहा हूँ?
में KnockoutJS , मैं एक पढ़ें / लिखें परिकलित प्रॉपर्टी बना सकते हैं, जो मुझे कार्यों की एक जोड़ी, एक जो संपत्ति के मूल्य प्राप्त करने के लिए कहा जाता है, और एक जो जब संपत्ति के लिए निर्धारित है कहा जाता है निर्दिष्ट करने के लिए अनुमति दी। इसने मुझे लागू करने की अनुमति दी, उदाहरण के लिए, संस्कृति-जागरूक इनपुट - उपयोगकर्ता को "$ 1.24" टाइप करने और पार्सिंग को व्यूमॉडल में फ्लोट करने की अनुमति देता है, और इनपुट में प्रतिबिंबित व्यूमॉडल में परिवर्तन होता है।
निकटतम चीज़ जो मुझे इसके समान मिल सकती है, यह है इसका उपयोग $scope.$watch(propertyName, functionOrNGExpression);
मुझे एक फ़ंक्शन को लागू करने की अनुमति देता है जब $scope
परिवर्तनों में एक संपत्ति । लेकिन यह हल नहीं करता है, उदाहरण के लिए, संस्कृति-जागरूक इनपुट समस्या। समस्याओं को नोटिस करें जब मैं अपने तरीके से $watched
संपत्ति को संशोधित करने का प्रयास करता हूं $watch
:
$scope.$watch("property", function (newValue, oldValue) {
$scope.outputMessage = "oldValue: " + oldValue + " newValue: " + newValue;
$scope.property = Globalize.parseFloat(newValue);
});
( http://jsfiddle.net/gyZH8/2/ )
जब उपयोगकर्ता टाइप करना शुरू करता है तो इनपुट तत्व बहुत भ्रमित हो जाता है। मैंने संपत्ति को दो गुणों में विभाजित करके सुधार किया, एक बिना मूल्य के और एक पार्स मूल्य के लिए।
$scope.visibleProperty= 0.0;
$scope.hiddenProperty = 0.0;
$scope.$watch("visibleProperty", function (newValue, oldValue) {
$scope.outputMessage = "oldValue: " + oldValue + " newValue: " + newValue;
$scope.hiddenProperty = Globalize.parseFloat(newValue);
});
( http://jsfiddle.net/XkPNv/1/ )
यह पहले संस्करण पर एक सुधार था, लेकिन थोड़ा और अधिक क्रिया है, और ध्यान दें कि अभी भी parsedValue
गुंजाइश परिवर्तनों की संपत्ति का एक मुद्दा है (दूसरे इनपुट में कुछ टाइप करें, जो parsedValue
सीधे परिवर्तन करता है। शीर्ष इनपुट को नोटिस नहीं करता है। अपडेट करें)। यह एक नियंत्रक कार्रवाई से या डेटा सेवा से डेटा लोड करने से हो सकता है।
क्या एंगुलरजेएस का उपयोग करके इस परिदृश्य को लागू करने का कोई आसान तरीका है? क्या मुझे प्रलेखन में कुछ कार्यक्षमता याद आ रही है?