मैं कोणीय यूआई बूटस्ट्रैप datepicker उपयोग कर रहा हूँ लोड हो रहा है जब: https://angular-ui.github.io/bootstrap/#/datepickerपार्स दिनांक स्ट्रिंग कोणीय यूआई बूटस्ट्रैप datepicker
जब मैं डेटा सर्वर से प्राप्त का उपयोग कर प्रपत्र प्रस्तुत करना, वहाँ datetime क्षेत्रों के साथ समस्या है। मेरे इनपुट datepicker इस तरह दिखता है:
{
...
startedAt: "2015-05-29T02:00:00+0200"
}
जब मैं मॉडल $scope.item = response;
के जवाब डेटा असाइन, datepicker इनपुट क्षेत्र सही ढंग से प्रदान की गई है (सही दिनांक है:
<form name="itemForm">
<input type="datetime" class="form-control" id="startedAt" name="startedAt"
ng-model="item.startedAt"
ng-click="open($event, 'startedAt')"
uib-datepicker-popup="yyyy-MM-dd"
is-open="datepickers.startedAt"
/>
</form>
मेरे सर्वर JSON स्ट्रिंग के रूप प्रतिक्रिया datetime रिटर्न चयनित और यह चयनित प्रारूप में ठीक से स्वरूपित है)। समस्या यह है कि सत्यापन पास नहीं होता है। मैं:
itemForm.startedAt.$invalid == true
मैंने देखा है कि datepicker क्षेत्र के लिए बाध्य डेटा Date
वस्तु और नहीं स्ट्रिंग
मैं कामयाब (Date
एक जब मैं datepicker से नई तिथि का चयन करें, $scope.item.startedAt
है) के आसपास काम करने के लिए किया जाना चाहिए इस मुद्दे को और नियंत्रक में ऐसा करते हैं:
$scope.item = response;
$scope.item.startedAt = new Date($scope.item.startedAt);
यह इस तरह से काम करता है ... लेकिन मैं मैन्युअल रूप से परिवर्तित करने के लिए स्ट्रिंग हर बार जब मैं सर्वर से प्रतिक्रिया प्राप्त तारीख करना नहीं करना चाहते हैं। मैं एक निर्देश बनाने की कोशिश की, तो यह मेरे लिए ng-model
धर्मान्तरित कि मैं datepicker इनपुट क्षेत्र के लिए आवंटित कर सकते हैं:
.directive("asDate", function() {
return {
require: 'ngModel',
link: function (scope, element, attrs, modelCtrl) {
modelCtrl.$formatters.push(function (input) {
var transformedInput = new Date(input);
if (transformedInput != input) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
}
})
खैर यह काम करता है, क्योंकि अब मैं मेरे विचार में Date
वस्तु, जब मैं उत्पादन मॉडल देख सकते हैं : {{item.startedAt}}
। हालांकि अभी भी सत्यापन विफल रहता है! मुझे संदेह है कि यह मेरे साथ कुछ समस्या है कि मॉडल और दृश्य के बीच डेटा कैसे बहता है, और कैसे यूआई बूटस्ट्रैप इसमें हुक करता है।
इसके अलावा जब मैं $formatters.push
से $formatters.unshift
करने के लिए अपने निर्देश बदलने के लिए, सत्यापन ठीक से काम करता है, लेकिन datepicker मेरी दिनांक स्वरूपित नहीं है
ओह आदमी हम यहाँ ठीक उसी समस्या हो रही है की तरह restangular ट्रांसफार्मर, कुछ में दिनांक के लिए स्ट्रिंग बदल सकता है !!! –
@VictorParmar वर्तमान में मैं इसे इस तरह से कर रहा हूं - सर्वर से प्राप्त करते समय प्रतिक्रिया स्ट्रिंग को डेट ऑब्जेक्ट में कनवर्ट करना। और सर्वर पर भेजते समय दिनांक ऑब्जेक्ट को स्ट्रिंग में कनवर्ट करना। यह सब मैन्युअल नियंत्रक में मैन्युअल रूप से किया जाता है। हो सकता है कि मैं सिर्फ इस तर्क को कोणीय सेवा के रूप में निकाल दूंगा, लेकिन मुझे नहीं लगता कि निर्देश – rsobon
हाँ क्लब में शामिल हो गया है - हम एक ही काम कर रहे हैं :) –