के साथ अमान्य मान रिकॉर्ड न करें मुझे वास्तव में पसंद है कि एनजी-मॉडल विशेषता सीधे मेरे मॉडल से कैसे जुड़ती है और उपयोगकर्ताओं को उनके परिवर्तनों पर त्वरित प्रतिक्रिया मिलती है। मेरे उपयोग के मामले के लिए यह सही है। हालांकि, मैं नहीं चाहता कि अमान्य मान मॉडल में डाले जाएं जहां वे गणना में रिंच फेंक सकते हैं। मैं किसी भी तरह मॉडल को केवल तभी अपडेट करना चाहता हूं जब फॉर्म नियंत्रण में मान वैध है। अमान्य मानों के लिए, मॉडल मान निश्चित होने पर नियंत्रण मान बदलने के लिए ठीक है।एनजी-मॉडल
मैं कोणीय (1.2rc) के स्रोत को बदलते हैं NgModelController के $ setViewValue कार्यान्वयन:
this.$setViewValue = function(value) {
...
if (this.$modelValue !== value) {
this.$modelValue = value;
...
}
};
इस के लिए
:
this.$setViewValue = function(value) {
...
if (this.$modelValue !== value && this.$valid) {
this.$modelValue = value;
...
}
};
यह बिल्कुल मैं क्या चाहते हो रहा है, लेकिन मैं डॉन ' टी उचित तरीके से ऐसा करने के बारे में नहीं जानते। इस व्यवहार को बदलने का सही तरीका क्या है? या क्या मेरे प्रयास किसी कारण से विफलता के लिए बर्बाद हो गए हैं?
अपडेट: जोड़ा गया उदाहरण।
<div ng-controller="MyCtrl">
{{validNumber}}
<form>
<input
type="number"
ng-model="validNumber"
required
min="10"
max="20"
/>
</form>
</div>
और जे एस:
उदाहरण के लिए http://jsfiddle.net/FJvgK/1/ एचटीएमएल पर देखने
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.validNumber = 15;
}
संख्या 10 और 20 के बीच मूल्यों के लिए ठीक से पता चलता है, लेकिन मैं इसे इतना चाहते हैं कि यदि आप अचानक बॉक्स में '8' टाइप करें, या दूसरे अंक को '1' छोड़कर अंतिम वैध संख्या अभी भी ऊपर दिखाएं। यही है, मॉडल का हमेशा वैध मान होता है, भले ही नियंत्रण न हो।
हाँ क्षमा करें मैंने एक उदाहरण जोड़ा। मैं नहीं चाहता कि क्षेत्र शून्य हो जाए, मैं चाहता हूं कि यह वैध मान रखे। –
आप सही थे। यह मॉडल को नहीं बदलता है, यह यूआई में कहीं और अमान्य मॉडल मान प्रदर्शित नहीं करता है जिसे मैं उम्मीद/उम्मीद नहीं करता था। –