Angular.js: الميزة: يجب أن تقبل ngTrueValue قيمًا غير سلسلة

تم إنشاؤها على ٢٥ يوليو ٢٠١٢  ·  60تعليقات  ·  مصدر: angular/angular.js

بالنسبة لمربعات الاختيار ng-model ، يدعم ngTrueValue السلسلة فقط. يجب أن يقبل التعبير الزاوي فقط وأن يكون Eval للحصول على القيمة بحيث يدعم مثلاً كائن js.

PRs plz! forms moderate feature

التعليق الأكثر فائدة

كان لدي فقط إدراك مثير للاهتمام. ما كنت أحاول القيام به - ومن مظهره ، ما حاول الكثير منكم فعله - يمكن تحقيقه في الواقع من خلال:

ng-true-value="{{ myVariable | json }}"

هذا يدعم قيم السلسلة ، القيم المنطقية والأرقام. لست متأكدًا حتى الآن مما إذا كنت أحب هذا بالفعل ، لكنني بالتأكيد وجدته مسليًا. وربما يساعد هذا شخصًا آخر.

ال 60 كومينتر

لست متأكدًا تمامًا من الغرض من ngTrueValue ، إلا أنه يبدو وكأنه توجيه ملائم لإضافة ساعات إلى وحدة تحكم لحالة واحدة. أظن أنه إذا كنت تريد تعيين نموذج ما على قيمة معقدة ، فقد يكون من الأنظف وضع $scope.$watch على نموذج مربع الاختيار الخاص بك وتعديل نموذج على النطاق وفقًا لذلك.

coli ، هل لديك حالة استخدام معينة في الاعتبار؟ IgorMinar ، mhevery ، vojtajina ، ما رأيكم يا رفاق؟

حالة الاستخدام شائعة إلى حد ما في الواقع:

لدي مجموعة من كائنات الفئة على سبيل المثال ، $ domain.categories = [{id: 5، name: "First"}، ...}

ثم لدي مصفوفة الفئات المحددة التي تحتوي على مجموعة فرعية من تلك الفئات.

أريد إظهار مربع اختيار لبعض الفئات (الترحيل) ، وعند تحديد خانة الاختيار أو إلغاء تحديدها ، يتم تغيير الفئات المحددة.

لقد كتبت بالفعل أمرًا سيحل محل سلوك مربع الاختيار الافتراضي لإضافة دعم لما سبق. يمكنني مشاركة الرمز إذا لزم الأمر.

انتهى استخدامي على هذا النحو ، كان هناك حاجة إلى keyField لإجراء مقارنة الكائنات كما في حالتي ، يمكن أن يكون كائن المجموعة المحدد وكائن المجموعة مختلفين قليلاً في البداية (لقد جاءوا من 2 واجهة برمجة تطبيقات خلفية مختلفة)

<ng-repeat="group in groups>
    <input type='checkbox' ng-model="selectedArray" ng-true-value="group" mi-checkbox="{keyField:'id'}">
</>

هيك ، لدي حالة استخدام أبسط بكثير شعرت بخيبة أمل لاكتشاف أنها لا تعمل - أحتاج إلى عدد صحيح ، بدلاً من سلسلة!

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

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

+1. دعم التعبير في ng-true-value

+1 عدد صحيح في ng-true-value

+1 للتعبير بدلاً من السلسلة

+1 تعابير الدعم!

+1 للتعبيرات

+1 كائنات الدعم:

<div ng-repeat="group in groups">
    <input type='checkbox' ng-model="array[$index]" ng-true-value="group" />
</div>

coli هل تمانع في مشاركة التوجيه الذي كتبته؟ ستكون مساعدة كبيرة لي بينما لا تزال هذه المشكلة قيد النظر. ربما في جوهرها؟

brab لقد كتبته في وظيفة سابقة لسوء الحظ ، لكن بشكل أساسي ، يشبه الكود المدمج لمربعات الاختيار ، لقد قمت بنسخه / لصقه في توجيه مخصص وإضافة دعم للتعبير. (+ اختراق قبيح لإزالة الجهاز المدمج)

ستكون التعبيرات رائعة! ومع ذلك ، فمن المتوقع حتى اختبار الحقيقة جافا سكريبت للأعداد الصحيحة. أستخدم مورد $ لملء كائن يُرجع قيمًا صحيحة (1 أو 0) من منطقية لقاعدة البيانات. ثم يتم إرفاقها بالنطاق $ الذي يرتبط به النموذج ng على المدخلات. فوجئت حقًا بمعرفة أن إعداد ng-true-value = "1" لن يتعرف على العدد الصحيح 1 باعتباره صحيحًا وحدد المربع. سننظر في الأساليب الأخرى المذكورة في هذه الأثناء.

+1

+1 للتعبيرات

+1. دعم التعبير في ng-true-value

+1 على التعبيرات الداعمة!
في حالتي ، أحتاج إلى إنشاء نموذج ديناميكيًا.
على سبيل المثال: http://jsfiddle.net/federosky/N8Wjm/5/

+1 لعدد صحيح

1+ لعدد صحيح

+1 لعدد صحيح (أو أي رقم JS)

: +1: لدعم التعبيرات من فضلك! من فضلك! من فضلك! :-)

+1 على الأقل لدعم الأعداد الصحيحة ، ويفضل التعبيرات أيضًا.

ماذا عن شخص يقدم العلاقات العامة للأرقام الداعمة؟

+1 للتعبيرات

+1 لعدد صحيح

+1 لعدد صحيح

+1

: +1: للتعبيرات.

+1. ما عليك سوى مواجهة المشكلة عندما يكون لدي خاصية منطقية "مخفية" يجب تمثيلها كمربع اختيار "مرئي" على الصفحة. لذلك ، أحتاج إلى حالة "محددة" لتعني FALSE وغير محددة لتعني "TRUE".

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

من المحتمل أن يكون هذا تافهًا جدًا في التنفيذ ، وسأذهب إليه قبل النوم.

يدعم التصحيح الخاص بي التعبيرات الثابتة فقط ، ولكن إذا كان الناس في حاجة إليها حقًا ، أفترض أن أي تعبير سيكون كافياً. كانت هذه أسهل طريقة لعدم إحداث تغيير مفاجئ.

+1

+1

+1

+1 لنوع العدد الصحيح

+1

+1 للتعبيرات

+1

+1

+1

+1

: +1:

هذه هي الاختراقات المطلوبة الآن (العديد من WTFs):

<input type="checkbox" ng-model="fake" ng-checked="!notChecked" ng-change="notChecked = !notChecked"/>

+1

+1 لقد مر عامان من عمليات "+1". لماذا لا ندعم هذا حتى الآن؟

@ جانكارلوفيراي ، +1

سيء جدًا: هذا يعني بالنسبة لي أن الأمور أصبحت أكثر تعقيدًا.
اعتدت في السابق
ng-true-value="{{proxyOnValue}}"
حيث تمت تهيئة proxyOnValue في وحدة تحكم.
(يُعاد استخدام نفس طريقة العرض لتكوين وكيل HTTP / HTTPS / FTP / POP3 / SMTP حيث تختلف القيمة الفعلية.)

الآن حاولت
ng-true-value="proxyOnValue"
لكن هذا يطرح استثناء لأن التعبير ليس ثابتًا.

هذا يعني أنه لا بد لي من استبدال تطبيق بسيط (ngTrueValue) بتطبيق أكثر تعقيدًا (مشاهدة أو Object.defineProperty) ، لذلك في الواقع عكس ما كان مقصودًا.

لماذا هذا القيد المصطنع؟
فقط

  • استخدم القيمة الحالية لـ ngTrueValue / ngFalseValue عندما يتغير النموذج أو ينقر المستخدم على مربع الاختيار
  • للحصول على مقياس جيد ، احصل على ساعة داخلية على تعبيرات ngTrueValue / ngFalseValue (إذا لم تكن ثابتة) وقم بتحديث حالة مربع الاختيار عند تشغيل الساعة.

eekboom - لا يزال بإمكانك استخدام الاستيفاء الخاص بك: http://plnkr.co/edit/LQ6OpFjkjiFLxxMJ9hxj؟p=preview

petebacondarwin - يمكنه استخدام الاستيفاء ، لكنه لن يساعده: http://plnkr.co/edit/nNwjEkPIDJwe60HWX950؟p=preview
يتم فحص القيمة مرة واحدة فقط - لا يتم أخذ التغييرات اللاحقة في الحساب ، لذلك يتم استخدام القيمة الأولية فقط دائمًا.

dliebscher - كنت أفهم أن eekboom أراد فقط تهيئته مرة واحدة:

استخدمت سابقًا ng-true-value="{{proxyOnValue}}" حيث تمت تهيئة proxyOnValue في وحدة تحكم.

نعم ولا: أريد تهيئته مرة واحدة فقط ، ولكن فقط بعد تحميل تكوين الوكيل عبر xhr. لذلك يتغير (من غير محدد) مرة واحدة بعد تهيئة العرض.

eekboom
عندما كنت أقوم بالترحيل من 1.2 ، قمت بالتبديل إلى ما يلي:

ng-true-value="{{proxyOnValue}}"

ل

ng-true-value="'{{proxyOnValue}}'"

الذي يعمل ، لكنه يبدو غبيًا

كان لدي فقط إدراك مثير للاهتمام. ما كنت أحاول القيام به - ومن مظهره ، ما حاول الكثير منكم فعله - يمكن تحقيقه في الواقع من خلال:

ng-true-value="{{ myVariable | json }}"

هذا يدعم قيم السلسلة ، القيم المنطقية والأرقام. لست متأكدًا حتى الآن مما إذا كنت أحب هذا بالفعل ، لكنني بالتأكيد وجدته مسليًا. وربما يساعد هذا شخصًا آخر.

getu-lar لقد جربت ما قلته ، باستخدام كائن معقد ، إنه يعمل. في القيمة ng-false-value ، ملأت ng-false-value="{}" . قبل التعامل مع البيانات ، أقوم بتمرير عامل تصفية لقطع جميع القيم الزائفة من المصفوفة. الكثير من الشكر!

نجح حل getu-Lar بالنسبة لي. شكرا.

كنت أحاول استخدام تعبير يتحول إلى سلسلة بها شرطة سفلية ، على سبيل المثال "101_3". لقد استخدمت حل getu-lar وهو يعمل ببساطة. يبدو وكأنه اختراق بالرغم من ذلك. شكرا لتقاسمها!

+1 للتعبيرات

+1

لا يبدو أن هناك الكثير من الأمل لفريق Angular لتقديم توجيه عاقل لخانة الاختيار لسلسلة 1.x ... لا يمكن أن يكون الأمر صعبًا للغاية. سيكون دعم التعبير متوافقًا تمامًا مع الإصدارات السابقة بسبب الاقتباس الإلزامي.

حتى ذلك الحين ، يعمل الحل البديل المقترح بالنسبة لي:

ng-true-value="{{ myVariable | json }}"

تأكد من تحديد myVariable في وحدة التحكم. حاولت تعريفه في رابط ما بعد ولم ينجح.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات