路由加载时运行成员控制器函数以设置控制复选框的属性
Running an ember controller function when route loads to set property that controls a checkbox
我已经设置了一个成员复选框:
{{view Ember.Checkbox checkedBinding='isChecked'}}
此复选框绑定到此控制器:
App.SettingsController = Ember.Controller.extend({
isChecked: false,
isItChecked: function(){
var me = this;
$.getJSON('ajax/checkIfUseLowRes.php', function(data){
//console.log(data);
//me.isChecked = data;
me.set('isChecked', data);
//console.log(me.isChecked);
})
},
sendSetting: function(){
var isChecked = this.isChecked;
//this.set('isChecked', !isChecked);
console.log(isChecked);
$.post('ajax/setLowRes.php', {useLowRes: isChecked});
App.nameSpace.set('needsRefresh', true);
}.observes('isChecked')
});
本质上,它是一个发布设置的复选框,我的问题是设置复选框的原始状态。当我加载路由时,我希望运行isItChecked()
来设置复选框的原始状态。
示例:1.我进入设置,单击复选框2.我离开网站,回到设置页面这里是我希望isItChecked()
函数运行的地方,以查询服务器并查看设置是否设置为
如果设置了,则get请求返回true,我希望复选框被选中,因此将me.isChecked设置为data(true)
到目前为止,我还不知道该怎么做,有人能帮我吗?
我试过在App.SettingsRoute
的模型中设置它,但似乎无法在控制器中运行该函数。
谢谢。
JSBin:http://jsbin.com/ukuwiq/1/edit
实现这一点的一种方法是使用路由的setupController方法。
App.SettingsRoute = Ember.Route.extend({
setupController: function(controller, model) {
$.getJSON('ajax/checkIfUseLowRes.php', function(data){
console.log('setting isChecked to: ', data);
controller.set('isChecked', data);
})
}
})
这应该可以在对现有代码进行最少更改的情况下完成工作,但确实有一些缺点,而且不完全是成员方式。也许拥有一个表示您的设置的模型对象,将ajax代码移动到该模型对象,并根据需要使用路由的模型挂钩进行触发会更有意义。有关如何工作的示例,请参阅没有ember数据的ember。
正如Mike所说,您可以使用"setupController",也可以使用以下内容:
App.SettingsRoute = Ember.Route.extend({
activate: function() {
this.controllerFor('settings').isItChecked();
}
})
您不能只使用init函数吗?例如
App.IndexController = Ember.ObjectController.extend({
init: function() {
console.log("function run");
},
相关文章:
- CORS:否'访问控制允许来源'header-但是php设置头文件
- 我如何设置HTTP头“;访问控制允许起源”;用于来自thttpd web服务器的HTTP响应
- 无法在Chrome控制台中使用javascript将焦点和光标设置为输入文本
- 即使在服务器将访问控制允许原点设置为“*”之后,也会收到javascript错误
- 尝试使用jquery设置鼠标按下的时间来更改按钮触发器以控制音量滑块
- 为什么我得到“;访问控制允许起源”;当已经设置了头时,通过AJAX下载文件
- 否'访问控制允许来源'当跨域设置为true时,请求的资源错误中存在标头
- 如何读取最终用户客户端的控制面板设置
- 角度设置自定义标头始终包装在访问控制请求标头中
- 如何使用jQuery/javascript根据服务器上设置的时区设置“日期控制”的今天日期
- 路由加载时运行成员控制器函数以设置控制复选框的属性
- 将缓存控制设置为外部资源
- 移动时设置输入值'滚动控制'
- 正在设置访问控制允许原点
- 如何在NetSuite suite SSv2中设置用户控制已保存搜索条件
- 如何设置(更改)导航器(appname,用户代理等)在浏览器控制
- 元素值在通过jQuery设置时不显示在控制台中
- 强制已设置的缓存控制标头立即过期
- 播放视频(使用javascript添加)在浏览器内控制原因"错误#2148尝试放松闪存安全设置
- 获取项目中的“本地项目路径”目录's的“版本控制设置”