2017-03-17 2 views
0

フィルタmysqlにangularjsが必要です。JavaScriptが空でない場合は、要素の追加関数が返されます。

my fiddle

あなたはTVボタンをチェックし、[送信]をクリックしたとき。 (TVボタンの値= 2)angularjs filterは、アメニティの列で2を検索します。これは機能しています。しかし、テレビとケーブルテレビのチェックとクリック送信フィルタが動作していないとき。私のフィルタコードが悪いので。この行を変更する方法

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

この取得1つの値のindexOf(1)私は、複数の値のindexOfをしたい( '1,7,9,11')インデックスは別の方法かもしれませんか?

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 || ...; 
 
}; 
 
}

説明:

k1 == zz1 
 

 
k2 == zz2

私がしたい: k1はこのフレーズリターン真のアドオンを等しい場合:|| ZZ1 要素は例えば1本追加リターンOR素子

場合:例2について

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

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

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

 
return k1 || k3;

k1 == false; 
 

 
k2 == true; 
 

 
k3 == true; 
 

 
k4 == true; 
 

 
return k2 || k3 || k4;
私の修正再表示にあなたの応答に基づい

+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)) }) 
関連する問題