javascript - AngularJS ngOptions filter array by boolean field -


मेरे पास यह सरणी है:

  this.chapters = {1: {name: अध्याय 1 ', दिखाएं: झूठे}, 2: {नाम:' अध्याय 2 ', दिखाएं: सच}, 3: {नाम:' अध्याय 3 ', शो: सच}};   

और मैं केवल उन अध्यायों को दिखाना चाहता हूं जिनके शो वैल्यू इस चयन में सही है

  & lt; ng-model = "cart.newchapter" ng- Options = "cart.chapters में (के, वी) के लिए v.name" & gt; & lt; / select & gt;   

अब यह सभी अध्याय दिखा रहा है, लेकिन मुझे उन्हें फ़िल्टर करना होगा। मैं फिल्टर लागू करने का प्रयास कर रहा हूं लेकिन यह काम नहीं करता। क्या आप मेरी मदद कर सकते हैं? ओह! मैं बूलीयन प्रकार का बदल नहीं सकता।

आप ऑब्जेक्ट पर फिल्टर लागू नहीं कर सकते, केवल एरे के लिए इसलिए, आपके पास यहां 2 विकल्प हैं, अध्याय को एक सरणी या पूर्व-फिल्टर को अध्याय ऑब्जेक्ट का उपयोग करके इस तरह से फ़ंक्शन का उपयोग करें: <पूर्व> $ scope.filter = फ़ंक्शन (अध्याय) {var परिणाम = {}; Angular.forEach (अध्याय, कार्य (अध्याय, कुंजी) {if (! Chapter.show) {return;} परिणाम [कुंजी] = अध्याय;}); वापसी परिणाम; };

और HTML पर:

  & lt; चुनें ng- मॉडल = "newchapter" ng- विकल्प = "v.name के लिए (k, v) फ़िल्टर (अध्याय) में "& gt; & lt; / select & gt;   

  कोणीय। मॉड्यूल ('ऐप', [])। नियंत्रक ('Ctrl', फ़ंक्शन ($ गुंजाइश) {$ scope। अध्याय = {1: {नाम: 'अध्याय 1', शो: झूठे}, 2: {नाम: 'अध्याय 2', शो: सच}, 3: {नाम: 'अध्याय 3', शो: सच}}; $ Scope.filter = समारोह (अध्याय) {var परिणाम = {}; कोणीय। ईयर (अध्याय, कार्य (अध्याय, कुंजी) {if (! Chapter.show) {return;} परिणाम [कुंजी] = अध्याय;}); वापसी परिणाम;};});   
  & lt; script src = "https: //ajax.googleapis। com / ajax / libs / AngularJS / 1.2.23 / angular.min.js "& gt; & lt; / स्क्रिप्ट & gt; & Lt; div ng-app = "ऐप" एनजी-नियंत्रक = "Ctrl" & gt; & Lt; ng- मॉडल का चयन करें = "नवाचार" एनजी-विकल्प = "फिल्टर के लिए (कश्मीर, वी) के लिए v.name (अध्याय)" & gt; & lt; / select & gt; & Lt; / div & gt;      

Comments