কৌণিক জেএস ফিল্টার সমান নয়


83

খুব বেসিক প্রশ্নের মত মনে হচ্ছে তবে আমি সিনট্যাক্সটি সঠিকভাবে পেতে পারি না ..

<li class="list-group-item" ng-repeat="question in newSection.Questions | filter:Id != '-1'; " ng-mouseenter="hover = true" ng-mouseleave="hover = false">
    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

আমি শুধু চাই সমস্ত আইডি যেখানে আইডি নোট -1 নেই show আমি কি ভুল করছি. ধন্যবাদ!


আপনাকে একটি কাস্টম ফিল্টার লিখতে হবে যা প্রশ্ন.আইডি! = -1 পরীক্ষা করে। এছাড়াও আমি মনে করি আপনার ত্রুটিটি হ'ল আইডিটি প্রশ্নের একটি বৈশিষ্ট্য
— সলিউয়েবলনোনগন ২

@ এলিটঅ্যাক্টাগন আপনি এটি করতে পারেন - আমার উত্তর নীচে দেখুন।
— মাইকেল রোজ

আপনি কি ডকুমেন্টেশন তাকান? docs.angularjs.org/api/ng/filter/filter যে অংশটিতে expressionব্যাখ্যা করা হয়েছে ( ব্যবহারের দ্বিতীয় পৃষ্ঠায় -> যুক্তি ) filter: {Id: "!-1"}বা সেই শব্দের মতো কিছু করা কৌতুক করে
— নেবুলোসার

উত্তর:


165

বাক্যবিন্যাসটি কিছুটা দূরে রয়েছে, চেষ্টা করুন:

<li class="list-group-item"
    ng-repeat="question in newSection.Questions | filter:{ Id: '!-1'}"
    ng-mouseenter="hover = true" ng-mouseleave="hover = false">

    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

একটু জেএসফিডেল দেখুন: http://jsfiddle.net/U3pVM/3845/

সম্পাদনা করুন:

ভেরিয়েবল সহ উদাহরণ:

<script> var invalidId = '-1'; </script>
<li class="list-group-item"
    ng-repeat="question in newSection.Questions | filter:{ Id: '!' + invalidId}"
    ng-mouseenter="hover = true" ng-mouseleave="hover = false">

    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

এটি কি কোনওভাবে চলকগুলির জন্যও কাজ করতে পারে? আপনার ফিডলের এই সামান্য পরিবর্তনটি একটি ধ্রুবকের পরিবর্তে একটি ভেরিয়েবলের "সমান নয়" পরিমাণ রাখে এবং এটি আর কাজ করবে না।
— ডোমি

আচ্ছা আপনার নিজের ফিল্টার ফাংশনটি সম্ভবত লেখার দরকার আছে, আসুন এটি কল করুন checkForXএবং তারপরে এটি ব্যবহার করুন ... | filter:checkForXএবং কোনও মিল থাকলে সত্য বা মিথ্যা ফিরে আসুন ...
— মাইকেল রোজ

@ ডোমি, আমি আরও সাধারণ উত্তর পোস্ট করেছি যা আপনার প্রশ্নের উত্তর দেয়। আপনার যখন সময় থাকবে তা দেখুন
— ফার্নান্দো কারভালহোসা

4
@ টিলম্যান, অতিরিক্ত ভেরিয়েবল ঘোষণার দরকার নেই। এটি ভালভাবে কাজ করে: "ফিল্টার: {আইডি: '!' + notValid। "
— স্ট্যালিনকো

11
এটাও আউট ফিল্টার করবে কোন Idযেটা বহন করে -1যেমন একটি সাবস্ট্রিং, যেমন -11বা 2-1। নির্ভরযোগ্যভাবে চেক করার জন্য যে Idনয় -1আপনি যে ফিল্টার একটি ছোট comparator ফাংশন এবং ব্যবহারের লিখতে হবে।
— অ্যান্ডিপিয়া

20

যদিও @ মিশেল রোজের উত্তরটি এই ক্ষেত্রে কাজ করে তবে আমি মনে করি না যে আপনি যদি কিছু অবজেক্ট / ভেরিয়েবলের সমান নয় ফিল্টার করার চেষ্টা করেন

সেক্ষেত্রে আপনি ব্যবহার করতে পারেন:

জেএস :

filterId = -1

এইচটিএমএল:

<li ng-repeat="question in newSection.Questions | filter: !{ Id: filterId}">
</li>

এমনকি আরও নেস্টেড কেস:

জেএস :

someQuestion = {
   someObject: {
     Id: 1
   }
}
newSection.Questions = [someQuestion]

এইচটিএমএল

<li ng-repeat="question in newSection.Questions | filter: !{someObject : {Id: -1} }">
</li>

4
এই বাক্য গঠনটি আমার পক্ষে কাজ করে না:! {আইডি: -1} তবে বিকল্প উত্তর দুর্দান্ত কাজ করে: {আইডি: '! - 1'}। সম্ভবত এটি / একটি সংস্করণ পার্থক্য ছিল?
— পাইথন

হতে পারে. আপনি কি সংস্করণ ব্যবহার করছেন?
— ফার্নান্দো কারভালহোসা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.