Javascript 当route加载到控制复选框的set属性时运行ember控制器函数
我已设置了一个余烬复选框:Javascript 当route加载到控制复选框的set属性时运行ember控制器函数,javascript,checkbox,ember.js,Javascript,Checkbox,Ember.js,我已设置了一个余烬复选框: {{view Ember.Checkbox checkedBinding='isChecked'}} 此复选框已绑定到此控制器: App.SettingsController = Ember.Controller.extend({ isChecked: false, isItChecked: function(){ var me = this; $.getJSON('ajax/checkIfUseLowRes.php', function(dat
{{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')
});
本质上,它是一个复选框,张贴一个设置,我的问题是设置复选框的原始状态。加载路由时,我希望运行isitched()
以设置复选框的原始状态
例如:
1.我进入设置,单击复选框
2.我离开网站,回到设置页面
这里是我希望运行isItChecked()
函数来查询服务器并查看设置是否已设置的位置
如果设置了,get请求将返回true,我希望选中复选框,因此将me.isChecked设置为data(true)
现在我还不知道怎么做,有人能帮我吗
我尝试在我的应用程序中设置它。SettingsRoute
的模型中,但似乎无法在我的控制器中运行该功能
谢谢
JSBin:实现这一点的一种方法是使用路由的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);
})
}
})
这应该在对现有代码进行最少更改的情况下完成这项工作,但确实有一些缺点,而且不完全是ember方式。如果有一个表示您的设置的模型对象,将ajax代码移动到该模型对象,并根据需要使用路由的模型钩子来触发,可能会更有意义。有关如何工作的示例,请参见。正如Mike所说,您可以使用“setupController”,也可以使用此选项:
App.SettingsRoute = Ember.Route.extend({
activate: function() {
this.controllerFor('settings').isItChecked();
}
})
你能不能不用init函数?e、 g
App.IndexController = Ember.ObjectController.extend({
init: function() {
console.log("function run");
},
它应该不是
this.controllerFor('settings').send('isItChecked')代码>?谢谢!这很有帮助。这只会执行一次,而不是每次显示控制器时。