এনজি-হাইড / এনজি-শোতে জটিল অভিব্যক্তিগুলি কি সম্ভব?


180

আমি এটি করতে চাই:

ng-hide="!globals.isAdmin && mapping.is_default"

তবে অভিব্যক্তি সর্বদা মূল্যায়ন করে false

আমি বিশেষ ফাংশনটি সংজ্ঞায়িত করতে চাই না $scope


1
এই বাক্য গঠনটি আমার পক্ষে কাজ করে এবং আমি এটি ঘন ঘন ব্যবহার করি। যদি এটিতে মূল্যায়ন হয় false, আপনি সেই মানগুলি ডাবল-চেক করতে চাইতে পারেন। এটা সম্ভব যে "গ্লোবাল" এবং / অথবা "ম্যাপিং" অবজেক্টগুলি undefined
হ'ল

উত্তরের নীচে আমার মন্তব্য পড়ুন।
পল

কেবল একটি ইঙ্গিত - আপনি যদি এর পরিবর্তে নিয়ামক পদ্ধতি ব্যবহার করেন তবে আপনি ডিবাগারে মূল্যায়নের মধ্য দিয়ে যেতে পারেন!
দিমিত্রি কে

উত্তর:


212

আপনার যদি নির্বিচারে জাভাস্ক্রিপ্ট কোড চালানোর প্রয়োজন হয় তবে একটি নিয়ন্ত্রণকারী পদ্ধতি ব্যবহার করুন বা আপনি কোনও ফিল্টার সংজ্ঞায়িত করতে পারেন যা সত্য বা মিথ্যা ফিরে এসেছে।

আমি কেবল পরীক্ষা করেছি (এটি আগে করা উচিত ছিল), এবং ng-show="!a && b"প্রত্যাশার মতো কাজ করেছিলাম ।


4
তুমি ঠিক. সমস্যাটি ছিল যে আইডমিন পতাকাটি 'বুলিয়ান' এর পরিবর্তে 'স্ট্রিং' টাইপের ছিল।
পল

121

ng-show/ ng-hideশুধুমাত্র booleanমান গ্রহণ করে ।

জটিল এক্সপ্রেশনগুলির জন্য জটিলতা এড়াতে নিয়ামক এবং সুযোগ ব্যবহার করা ভাল।

নীচে একজন কাজ করবে (এটি খুব জটিল প্রকাশ নয়)

ng-show="User=='admin' || User=='teacher'"

দুটি শর্তের যে কোনও একটি সত্য (ওআর অপারেশন) প্রত্যাবর্তন করলে এখানে উপাদানটি ইউআইতে প্রদর্শিত হবে।

এর মতো আপনি যে কোনও এক্সপ্রেশন ব্যবহার করতে পারেন।


12

আপনার খুব বেশি এক্সপ্রেশন না থাকলে এটি কাজ করবে।

উদাহরণ: ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"

এটির চেয়ে আরও বেশি প্রকাশের জন্য একটি নিয়ামক ব্যবহার করুন।


1
আপনার বক্তব্যটি সঠিক বলে আমি মনে করি না: This will work if you do not have too many expressions.যদিও আমি সম্মত হই যে এটির পরিবর্তে এটি নিয়ামকের মধ্যে করা উচিত।
রাহুল দেশাই

7

আমি সাধারণত এনজি-শো এবং এনজি-লুকের সাহায্যে এক্সপ্রেশনগুলি এড়াতে চেষ্টা করি কারণ সেগুলি শর্তসাপেক্ষ নয়, বুলিয়ান হিসাবে ডিজাইন করা হয়েছিল। আমার যদি শর্তসাপেক্ষ এবং বুলিয়ান উভয় যুক্তির প্রয়োজন হয় তবে আমি প্রথম চেক হিসাবে এনজি-যদি ব্যবহার করে শর্তসাপেক্ষ যুক্তি যুক্ত করতে পছন্দ করি তবে এনজি-শো এবং এনজি-লুকের সাহায্যে বুলিয়ান লজিকের জন্য একটি অতিরিক্ত চেক যুক্ত করুন

হোয়ারভার, আপনি যদি এনজি-শো বা এনজি-লুকের জন্য শর্তসাপেক্ষ ব্যবহার করতে চান তবে এখানে কয়েকটি উদাহরণের সাথে একটি লিঙ্ক দেওয়া হয়েছে: এনজি-ইফ, এনজি-শো, এনজি-লুক, এনজি-অন্তর্ভুক্ত, এনজি-সুইচ ব্যবহার করে শর্তসাপেক্ষ প্রদর্শন


2

উপরের এই উত্তরগুলির মধ্যে কিছু আমার পক্ষে কার্যকর হয়নি তবে এটি করেছিল। সেক্ষেত্রে অন্য কারও ক্ষেত্রে একই সমস্যা রয়েছে।

ng-show="column != 'vendorid' && column !='billingMonth'"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.