2016-05-30 9 views
0

ユーザーが検索バーに入力を開始するまで、結果を非表示にする必要があるという問題があります。私はDotNetNukeプラグインを使用しているため、このモジュールを自分で構築しませんでした。私が使用する必要があると思うスコープは、検索用語を返すメソッドを持つ '.angrid-search'のためのもので、 'angrid-grid'が表示されるかどうかを決定するために使用されます。これはこれまで試みてきたコードだけでなく、多くの異なる類似のバリエーションです。angularJSのスコープを非表示にする

if (angular.element($('.angrid-search')).searchTerms === undefined){ 
    angular.element($('.angrid-grid')).hide(); 
} 

angular.element($('.angrid-search'))undefinedに戻ってくる、と何かがで入力されると、検索語を返します。問題は、私は要素を隠そうとした二行目にあるように私には思えます。

私はこの問題を解決するために必要な分だけ重要なことを学ぶ必要があるので、私は非常にAngular(これは私の最初の本当の問題です)の初心者です。

は、ここで基本的なDOM

<div class="angrid"> 
    <div class="angrid-search"> 
    </div> 
    <div class="angrid-grid-view"> 
     <div class="angrid-grid"> 
     </div> 
    </div> 
</div> 

挟ん原料の束がありますが、これらはのrelaventのスコープであり、私はインスペクタウインドウをcpypstたくありませんでした。私の主な質問は:.hide()メソッドは、このタイプの照合で動作するはずですか?

+2

私はあなたの状況に共感しますが、私たちの靴に身を置いてください。*私たちはあなたの投稿を続けなければなりません。推測や一般的なアドバイスに頼ることなく答えを構成するには十分ではありません。理想的には、[mcve]、または少なくとも閉鎖されるもの(たとえば、コードと実際のコンテキスト)を作成します。 – Jeroen

+0

私は編集しました。私は実際にこれを行う戦略を知らないので、これを行う方法を知っている誰かが必要とするかもしれない文脈を知ることは難しいです。 –

+0

なぜあなたは 'ngHide'を使ってそれを角度の仕方で行うことができませんか? ( 'ng-hide ="!searchTerms || searchTerms == '' "') –

答えて

0

あなたのようなものを試すことができます。

<div class="angrid"> 
<div class="angrid-search"> 
</div> 
<div class="angrid-grid-view"> 
    <div class="angrid-grid" ng-hide="hidegrid"> 
    </div> 
</div> 

とJSで

if (angular.element($('.angrid-search')).searchTerms === undefined){ 
    angular.element($('.angrid-grid')).hidegrid = true; 
} 
+0

ありがとうございました。ng-hideディレクティブがありました。私は過去にhtmlファイルを直接変更してしまったので、可能ならば避けたかったのです。 –

+0

私は.. ..しかし、はるかに単純な、はい:) –

+0

間違いなく!私は角度の動態を理解し始めています。これは、このタイプのロジックの多くがビューにプッシュされるのを見てきたので、もう少し固めました。助けてくれてありがとう! :) –

0

はい。それはうまくいくはずです。ここではデモです:

angular.module('demo', []) 
 
    .controller('demoCtrl', ['$scope', 
 
    function($scope) { 
 
     $scope.testFn = function() { 
 
     if (angular.element($('.angrid-search')).searchTerms === undefined) { 
 
      angular.element($('.angrid-grid')).hide(); 
 
     } 
 
     }; 
 
    } 
 
    ]);
<script data-require="[email protected]" data-semver="1.11.3" src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 
 
<script data-require="[email protected]" data-semver="1.5.5" src="https://code.angularjs.org/1.5.5/angular.js"></script> 
 

 
<div ng-app="demo" ng-controller="demoCtrl"> 
 
    <div class="angrid"> 
 
    <div class="angrid-search"></div> 
 
    <div class="angrid-grid-view"> 
 
     <div class="angrid-grid">Grid!</div> 
 
    </div> 
 
    </div> 
 

 
    <button ng-click="testFn()">the code will work...</button> 
 
</div>

ところで、あなたが言及:それは、その後、明らかに物事をします隠れない場合

angular.element($('.angrid-search'))undefined

に戻ってきますうまくいかない。おそらく、問題のシナリオをゼロから再現するのに十分な情報で別の質問をする必要があります。推測に頼らずに手助けすることができます。

+0

検索用語が定義されていないと、どのように隠れることができないのか混乱していますか?私は与えられた情報で問題を解決するのに十分な情報を見つけたと思う。ありがとう! –

+0

あなたのコメントは微妙に言いますが、質問の引用符とは非常に異なります。コメントには「**検索用語**」と書かれていますが、質問では「**」angle.element($( '。angrid-search')) '** 'です。 – Jeroen

+0

質問に "angular.element($。 'angrid-search'))。searchTerms"が返されます。検索バーには何も入力されていないので、検索用語は未定義です。バー "hello"に入力すると、検索用語は "hello"を返します。検索条件が未定義のときにグリッドを非表示にしたいのですが、これは何も入力されていないときに発生するためです。 –

関連する問題