سؤال

بعض الأصدقاء وأنا أعمل على المشروع.هذا هو المشروع الثاني الذي أنا أعمل مع AngularJS, حاليا باستخدام الإصدار 1.2.3.

على الرغم من أنني في بعض الأحيان تجد بعض من سلوكها الغريب ، لا أفهم لماذا يحدث شيء.

لذلك فإن الوضع هذا...في cshtml ملفات followig:

<div class="checkbox">
    <label>
         <input name="somecheckbox" type="checkbox" ng-click="click()" ng-model="displayRegardlessOfSomething" />
         <label>Display regardless of something</label>
    </label>
</div>

<h1>{{displayRegardlessOfSomething}}</h1>

في ملف جافا سكريبت لدي البرمجية التالية داخل التوجيه:

في البداية:

$scope.displayRegardlessOfSomething = true;

وأنا التالية:

$scope.click = function () {
    console.log($scope.displayRegardlessOfSomething)
}

و كلما الاختيار أو قم بإلغاء تحديد خانة الاختيار أنا دائما الحصول على صحيح...غير أن الغريب هو أن المحتوى داخل <h1></h1> العلامات والتغيرات....هكذا, انها مثل أنا تغيير قيمة متغير على html طبقة ، ولكن ليس على جافا سكريبت طبقة...

لماذا يحدث هذا ؟

لقد حل المشكلة باستخدام $الوالدين.displayRegardlessOfSomething ولكن أنا لا أفهم لماذا هذا إصلاح المشكلة...ما سبب المشكلة في المقام الأول ؟

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

المحلول

حاولت ما فعلت في كمان وأنه يعمل بشكل جيد بالنسبة لي.

http://jsfiddle.net/nicolasmoise/X9KYU/1/

حقيقة أنه يعمل بالنسبة لك عندما كنت استخدامها $parent يجعلني أعتقد أحد الوالدين تحكم على خطأ هنا.وربما كنت قد اثنين من المتغيرات مع نفس الأسماء ؟

P. S.:تذكر أن في جافا سكريبت ، الأوليات يتم تمريرها حسب القيمة الكائنات مرت الإشارة.هذا هو السبب في كثير من الأخطاء للمطورين الزاوي.ترى هذا كمان حيث أوضح وجهة نظري.

مع الأوليات: http://jsfiddle.net/nicolasmoise/X9KYU/

مع الكائنات: http://jsfiddle.net/nicolasmoise/X9KYU/2/

نصائح أخرى

إلا إذا كنت متأكد من أن كل شيء يعيش في نفس النطاق الذي يكاد يكون مطلقا ، يجب أن دائما نقطة في مكان ما في ng-نموذج التعبير.

myApp.controller('MyController2', function($scope) {

  $scope.model = { displayRegardlessOfSomething: true };

  $scope.click = function() {
    console.log($scope.model.displayRegardlessOfSomething);
  };
});

<input type="checkbox" 
       ng-click="click()" 
       ng-model="model.displayRegardlessOfSomething" />

انظر هذا plunker لمزيد من التفاصيل على عرض حي.

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