javascript – 当路由加载时,运行一个ember控制器功能来设置控制复选框的属性

前端之家收集整理的这篇文章主要介绍了javascript – 当路由加载时,运行一个ember控制器功能来设置控制复选框的属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经设置了一个ember复选框:
{{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()来设置复选框的原始状态.

例:
我进入设置,点击复选框
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-without-ember-data,了解如何工作的一个例子.

原文链接:https://www.f2er.com/js/155432.html

猜你在找的JavaScript相关文章