سؤال

لدي نموذج داخل وحدة التحكم الخاصة بي.أود أن أكون قادرًا على تعيين متغير النطاق بناءً على صلاحية هذا النموذج.لقد أعطيت النموذج اسمًا بالفعل:

<div ng-controller="myCtrl">

    ...

    <form name='myForm'>
        ...
    </form>

    ...

</div>

وقمت بإنشاء $watch على خاصية $valid الخاصة بهذا النموذج (توجد هذه في وحدة التحكم التي تحتوي على هذا النموذج):

$scope.$watch('myForm.$valid', function(oldVal, newVal) {
    console.log("Woo! This might be working!");
    if (newVal) {
        $scope.otherVar = true;
    } else {
        $scope.otherVar = false;
    }
}

يظهر بيان السجل الخاص بي فقط عند تحميل الصفحة، ولكن ليس عندما تتغير صلاحية النموذج.(لقد تحققت من أن خاصية $valid الخاصة بالنموذج تتغير عن طريق إدخال:

{{ myForm.$valid }}

ضمن نطاق النموذج الخاص بي)

لقد كنت أبحث حول SO ومن ما رأيته هذا يجب أن يكون العمل.(من الواضح أن هناك خطأ ما على الرغم من ...)

هل كانت مفيدة؟

المحلول

أعتقد أن مشكلتك هي function(oldVal, newVal) يجب ان يكون function(newVal, oldVal).وبصرف النظر عن ذلك لا أستطيع العثور على أي خطأ في التعليمات البرمجية الخاصة بك.فيما يلي مثال على plunkr العمل: http://plnkr.co/edit/ur42HFcVQbpTEBkRBtdY?p=preview

بخلاف ذلك، من المحتمل أن يكون هناك شيء آخر في التعليمات البرمجية الخاصة بك يؤثر على النموذج، ولم تقم بتضمينه في شيء مثل ng-if أو ng-view?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top