2017-03-17 4 views
0

나는 angularjs와 필터 MySQL을 싶습니다.자바 스크립트가 아닌 경우 빈 요소 추가 함수를 반환

my fiddle

당신은 TV 버튼을 확인하고 제출을 클릭하면. (TV 버튼 값 = 2) angularjs filter는 편의 시설 열에서 2를 찾습니다. 이 일하고있다. 그러나 TV와 케이블 TV를 확인하고 제출 필터를 클릭하면 작동하지 않습니다. 내 필터 코드가 나쁘기 때문에. 이 라인을 변경하는 방법

$scope.am_en = function() 
 
{ 
 
$scope.ot_Filter = function (location) { 
 
return location.amenities.indexOf(1)==0; 
 
}; 
 
}
같이 IndexOf (1)

이 얻을 하나 개의 값을 같이 IndexOf (1) 내가 여러 값 같이 IndexOf를 원하는 ('1,7,9,11') Indexof 다른 방법이있을 수 있습니다?

HTML :

<input type="checkbox" name="more_filter[]" value="1" id="map-search-amenities-1" ng-checked="false"> 
 
<input type="checkbox" name="more_filter[]" value="2" id="map-search-amenities-2" ng-checked="false"> 
 
..vs 
 
<button id="more_filter_submit" ng-click="am_en();">Submit</button>

나는 이것을 시도했지만 작동하지 :

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
$scope.am_en = function(){ 
 
$scope.ot_Filter = function (location) { 
 
var xC = $(".hosting_amenities input:checkbox:checked").map(function(){return $(this).val();}).get(); 
 
var xxc = "["+xC+"]"; 
 
var k1 = xxc.indexOf(1)!==-1; 
 
var k2 = xxc.indexOf(2)!==-1; 
 
var k3 = xxc.indexOf(3)!==-1; 
 
... 
 

 
var zz1 = location.amenities.indexOf(1)==0; 
 
var zz2 = location.amenities.indexOf(2)==0; 
 
var zz3 = location.amenities.indexOf(3)==0; 
 
... 
 

 
return zz1 || zz2 || zz3 || ...; 
 
}; 
 
}

,451,515,

설명 :

k1 == zz1 
 

 
k2 == zz2

내가 원하는 : K1이 구문 수익을 진정한 추가 동일한 경우 : || zz1 요소는 본 추가 창 OR 소자 예 1에

인 경우

if (k1 == true) ? "k1":""; 
 

 
if (k2 == true) ? "|| k2 ":""; 
 

 
if (k3 == true) ? "|| k3 ":""; 
 

 
return k1 || k3;

는 실시 예 2 :

k1 == false; 
 

 
k2 == true; 
 

 
k3 == true; 
 

 
k4 == true; 
 

 
return k2 || k3 || k4;
,129은

+1

내가 여기 인상을 해요, 전체 로직 스택의 다시 생각이 유용 할 것이다. 언제든지 "이건, 아니면 이건, 아니면 다른 건 아닌지 ..."라는 말을들을 때마다, 당신은 위험하고 부서지기 쉽고 카드 집을 디버그하기가 어렵습니다. 일반적으로 문제를 추상화하고 일반적으로 데이터 구조 측면에서 재고하거나 논리적 단계로 문제를 줄이면 훨씬 좋은 해결책을 얻을 수 있습니다. 일반적으로 지시 사항 (이 기능과 그 기능)으로 처리합니다. –

+1

나는 또한 "결과를 추가하지 않는다"는 것을 모른다. –

+0

나는 추가를 원하지 않는다. – toplumdusmani

답변

0

내 재 작성에 대한 응답을 바탕으로 (예, 사실), 여기 당신은 간다 :

let rooms = [ 
{ name : 'Room1', amenities : '1,3' }, 
{ name : 'Room2', amenities : '2,4' }, 
{ name : 'Room3', amenities : '1,2,3' }, 
{ name : 'Room4', amenities : '2,3,4' } 
]; 

let amenities = [ 
    { id : '1', name : 'Amenity1' }, 
    { id : '2', name : 'Amenity2' }, 
    { id : '3', name : 'Amenity3' }, 
    { id : '4', name : 'Amenity4' }, 
    ]; 

function getAmenities (room) { 

    // Turn the room amenity ids into an array 
    let ids_array = room.amenities.split (','); 

    // Filter the amenities table to get the array of amenities for this room 
    return amenities.filter (x => { 
     return (ids_array.indexOf (x.id) !== -1); 
    }); 
} 

// Show amenities for a given room 
rooms.forEach (x => { console.log (getAmenities (x)) })