余烬模板不更新属性变量的变化
ember template not update on property variable change
我尝试将class属性绑定到控制器创建的变量,但是当变量更改时,模板不会相应地更新。
这是我的模板的一个片段:
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav navbar-right">
<li {{bind-attr class="loggedIn:show:hide :dropdown" }}>
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user fa-lg"></i></a>
<ul class="dropdown-menu">
<li>{{#link-to 'profile'}}Profile{{/link-to}}</li>
<li><a href="#">Log out</a></li>
</ul>
</li>
变量为loggedIn,如果为true则显示该列表,否则隐藏该列表。模板名为Auth
这是Auth的控制器:
App.AuthController = Ember.Controller.extend({
loggedIn: false,
actions: {
activateProfile: function(state){
console.log(state);
this.set('loggedIn', true);
}
}
});
我有一个用于登录的控制器,它将在Auth内触发activateProfile动作,从而改变变量并显示<li>
,但不知怎的,它没有按预期工作。
这是我的登录控制器。
App.SigninController = Ember.Controller.extend({
needs:"Auth",
actions: {
userQuery: function() {
//this will be replace with call to the server
this.get('controllers.Auth').send('activateProfile', true);
}
}
});
和路线:
this.resource('auth',function(){
this.resource('profile');
this.resource('signin');
this.resource('signup');
});
我尝试登录控制台和ember属性,loggedIn变量确实得到改变,但<li>
没有出现。我做得够不够,如果你有更好的建议请指教。
谢谢
我在回答我自己的问题,以防有人有同样的问题。我没有使用Auth资源,而是将逻辑移动到IndexController,并在IndexController中声明loggedIn。我注意到的一件事是,如果你使用控制器A来改变/操纵控制器B的变量,你可能能够修改它的内容,但控制器B的模板不知道并正确更新。
为了解决这个问题,你必须使用观察者或计算作为别名。正如我提到的,我将变量移动到IndexController,因为它更有意义,用户状态应该知道整个应用程序,而不仅仅是Auth模块。
这是我如何修复它。
App.IndexController = Ember.Controller.extend({
loggedIn: false,
actions:{
loggedOut : function(){
this.set('loggedIn', false);
this.transitionToRoute('Index');
}
}
});
App.SigninController = Ember.Controller.extend({
needs: ['Index'],
isLoggingIn : Ember.computed.alias("controllers.Index.loggedIn"),
actions: {
userQuery: function() {
this.set('isLoggingIn',true)
}
});
当然,我将Auth的模板移动为Index,但不是更改名称,这就是我所需要做的。
希望有帮助!
相关文章:
- 重新加载页面时Javascript变量发生变化
- 如何检测和打印变化变量LESS
- 当变量发生变化时运行PHP
- 使用 jquery 检测变量变化
- 如果两个值都会动态变化,则用变量替换某个字符串的一部分 - Javascript
- 为什么 Angular 没有注意到这个变量的值发生了变化
- 如何防止变量在 JavaScript 中发生变化
- 为什么这个变量在函数之间传递时会发生变化
- 指令侦听控制器变量的变化
- JAVASCRIPT 变量在函数中没有变化
- 双向绑定不识别 AngularJS 中的变量变化
- 角度范围之外的变量的变化
- 设置路由时,角度范围变量会发生变化
- PHP 变量根据设备宽度而变化
- 观察Jquery/Javascript中的变量变化
- Javascript -在变量变化时播放声音
- jQuery中奇怪的变量变化
- Angular JS $作用域、数据绑定和变量变化
- Angular不会识别forEach循环中的作用域变量变化
- 如何使动态视图在作用域变量变化时正确更新