我想一个指令从控制器添加到我的网页。
您应该能够在$ scope中定义一个布尔变量来决定是否显示登录。
$scope.loginShouldBeShowing = false;
$scope.showLogin = function() {
$scope.loginShouldBeShowing = true;
};
如果这个变量设置为true
<login ng-if="loginShouldBeShowing"></login>
您可以在修改的jsfiddle在看到这个然后,您可以在模板中使用,与ngIf指令,只显示登录模板
http://jsfiddle.net/jK9zr/2/
我还添加了一个按钮,这样你就可以在该link
函数只AFTE后运行控制台中看到R您按下按钮,loginShouldBeShowing
被设置为true
我可以找到很多的网络上类似的例子,当指令标签是在加载时页面上,并能得到那些做工精细,所以这是什么使它认为它与$编译方法有关
从我的理解和以前的使用,通常在模板中包含指令仅用于某些情况下,即当某些$ scope变量是设置为某些值,使用ngIf或ngSwitch或ngShow。我认为,如果您试图编译模板的每一部分,可能会或可能不会在任何时候使用,那么事情很快就会变得非常混乱。虽然我只在AngularJS相对初学者,所以到目前为止,我只过使用$评估定制指令属性时,编译,所以
<login after-login="doThisFunction()"></login>
然后
可能需要使用$编译在调用doThisFunction()
适当的点。
作为一个小边栏,你变量的名称有点告知控制器,您关注的是正在发生的事情的模板。在控制器中保持某种模型/业务“状态”更为常见,然后在模板中显示相应的内容。所以,你可能会在控制器:
$scope.loginState = 'loggedOut';
然后在模板:
<login ng-if="loginState == 'loggedOut'"></login>
编辑:我也注意到,在登录指令是在不同的模块,应用程序的其余部分。我怀疑这导致了问题,所以我在JSFiddle中修改了这个方面,所以只有一个模块。
编辑:我觉得我很困惑$之间编译和上面$解析,所以我想核对一下我使用$编译文档/其他来源。
IM也很肯定我不应该从我的控制器中添加DOM元素,如此赞赏过的任何建议! – alfonsob
如果你还没有already..read此:** [我如何“认为AngularJS”如果我有一个jQuery的背景(http://stackoverflow.com/questions/14994391/how-do-i-认为,在-angularjs-IF-I-有-A-jQuery的背景)** – charlietfl
辉煌charlietfl,正是我所需要的! – alfonsob