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


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.