我有一个使用指令的“home”控制器。我希望能够在指令模板中显示/隐藏按钮,具体取决于控制器中变量的值。
这是我的指示:
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 :(得分:0)
您需要进行两项更改。
1)对=
使用showLockIcon
,如下所示:
scope: {
pageTitle: "@",
showLockIcon: "="
}
2)删除canPredictionsBePosted
show-lock-icon="{{canPredictionsBePosted}}"
周围的花括号
<gol-navbar page-title="{{matchWeek}}"
show-lock-icon="canPredictionsBePosted">
</gol-navbar>