2016-05-16 6 views
1

私はどの方法を使うべきかわからないので、これに多くの不満があります。以下は基本的な設定です。NG-IF/NG-SWITCHまたはNG-SHOW&NG-HIDEが必要ですか?

ムービーの状態に基づいてムービーの現在の状態を表示する必要があります。DOM内に別のメッセージが必要です。ムービーには3つの状態があります。 注:ムービーはJSONファイルに保存され、すべて1ページに表示されます。

  • 状態1

    映画リリース: 映画劇場で:

    ユーザーのテキスト: "劇場では今!"

  • State2

    映画公開:劇場で 映画:

    ユーザー・テキスト: "!今すぐ購入" (購入リンクは、ムービー 対象に含まれます)

  • 州立3.

    映画公開:劇場で 映画:

    ユーザーのテキスト:最新のニュースリリース

だからそれは本当です。真、偽|| false false。

HTMLコード。

<div class="ui blue ribbon label" ng-if="vm.getRelease(movie)"> 
    <i class="film icon"></i> {{vm.movieStatus}} 
    </div> 

のJavaScriptコード

 function getRelease(movie){ 
     if(movie.released && movie.inTheaters){ 
      vm.movieStatus = "In Theaters now!"; 
      return true 
     } else { 
      return 
     } 
    } 

JSONオブジェクト

{ 
    "_id": 1, 
    "name": "Captain America: Civil War", 
    "yay": 500365, 
    "nay": 14357, 
    "releaseYear": 2016, 
    "releaseDate": "27-4-2016", 
    "inTheaters": true, 
    "released": true, 
    "buyNow": "", 
    "imdbUrl": "http://www.imdb.com/title/tt3498820/", 
    "image_url": "http://cityplusme.com/images/CaptainAmericaCivilWar.jpg", 
    "description": "Political interference in the Avengers' activities causes a rift between former allies Captain America and Iron Man.", 
    "trailer": "https://www.youtube.com/watch?v=dKrVegVI0Us" 
}, 

これは正常に動作してを示し、 "今劇場で!"という唯一の問題は、より多くの条件を使用して、それらに基づいてvm.movi​​eStatusを変更する必要があることです。 私は多種多様なものを扱おうとしましたが、うまくいかないようです。

大変助かりました!

+1

ng-ifを使用すると、表示されていないアイテムが実際にDOMから削除されます。これは一般に、最適なパフォーマンスとリソースの利用のために実行するものです。より役立つ回答を得るために何が効いていないのかを投稿することをお勧めします。あなたのような関数を呼び出すことは、ng-ifからのもので、完全に受け入れられ、より複雑なロジックには一般的に好まれます。 –

答えて

2

ドキュメントごとに、ngIfディレクティブは{expression}に基づいてDOMツリーの一部を削除または再作成します。 ngIfに割り当てられた式が偽の値に評価された場合、その要素はDOMから削除されます。そうでない場合、要素のクローンがDOMに再挿入されます。

DOM内に他の状態の要素を保持し、それらを非表示にするか(ngShow/ngHideのようなCSSを使用して)、DOMから要素を完全に削除するかを決定する必要があります(ngIf行う)。

使用する表現は、ng-if="movie.released && movie.inTheaters"などとなります。

+0

ありがとう!私はそれを考え出した! –

関連する問題