2017-07-20 6 views
0

ディレクティブを使用する "ホーム"コントローラがあります。コントローラ内の変数の値に応じて、ディレクティブテンプレートのボタンを表示/非表示にしたいと考えています。ng-showで動作しないディレクティブスコープ変数

これは私のディレクティブは次のようになります。

angular.module("goleadoresApp").directive("golNavbar", [golNavbar]); 
function golNavbar() { 
    return { 
     restrict: "EA", 
     templateUrl: "views/templates/golNavbar.html", 
     scope: { 
      pageTitle: "@", 
      showLockIcon: "@" 
     } 
    }; 
} 

そして、私のテンプレート:私のビューから

<div class="bar bar-header bar-balanced"> 
    <h1 class="title"> 
     <i class="gol-logo-icon icon ion-ios-football"></i> 
     <span ng-bind="pageTitle"></span> 
    </h1> 
    <!--For testing purposes: This variable renders as false, however, ng-show in line below doesn't work-->  
    {{showLockIcon}} 
    <!--ng-show won't work. Element would still be visible even if showLockIcon is false--> 
    <a class="button icon ion-locked pull-right second-right-button" 
     ng-show="showLockIcon"></a> 
    <a class="button icon ion-help-circled" href="#/help"></a> 
</div> 

、私はテンプレートを使用して、コントローラ変数(canPredictionsBePosted)を渡していることでしょうtrueまたはfalseの値を保持していますが、trueの場合はテンプレートにボタンが表示されます:

<gol-navbar page-title="{{matchWeek}}" 
      show-lock-icon="{{canPredictionsBePosted}}""> 
</gol-navbar> 

このコードを実行すると、実際にshowLockIconテンプレート変数に渡された値が正しいことがわかりますが、ng-showを持つディレクティブテンプレートの要素は機能しません。つまり、falseの値を渡すと、ボタンはまだ表示されます。

アイデア?

さらに、私のホームコントローラのcanPredictionsBePosted変数の値を変更すると、テンプレート内のshowLockIconの値が更新されません。どのように私はこれを動作させることができますか?

私はディレクティブが新しく、すべての助けに感謝します。

+0

canPredictionsBePosted周りの中括弧を削除し、私もshowLockIconを使用して試してみた:

1)以下のようにshowLockIconため=を使用する "=" が、その後、 {{showLockIcon}}行の変数の値を見るのではなく、式(中括弧が含まれています)のテキストだけが表示されるため、テンプレートが破損しているようです。 – hugonne

+0

'='を使うのは正しいアプローチです。しかし、その間に{{showLockIcon}} ' – CodeWarrior

答えて

0

2つの変更が必要です。

scope: { 
     pageTitle: "@", 
     showLockIcon: "=" 
    } 

2)show-lock-icon="{{canPredictionsBePosted}}"

<gol-navbar page-title="{{matchWeek}}" 
      show-lock-icon="canPredictionsBePosted"> 
</gol-navbar> 
+0

の中括弧を削除しなければなりません。どうもありがとう。ちょっと分かりやすいように、指示文で@を使用するときは、html属性で{{}}を使用する必要があります(文字列の代わりに式を指定する)が、=を使用すると、式を渡すだけです。あれは正しいですか?正当な理由がありますか?私にとってはちょっと奇妙なようです。とにかく助けてくれてありがとう。 – hugonne

関連する問題