从服务器获取后在Backbone.Form中设置值

时间:2014-07-04 08:11:58

标签: javascript backbone.js

嗨,我是Backbone和JS的新手。

我需要从服务器获取数据并将此值作为planProviderMode选项单选按钮的默认值。所以我在defaultMode变量中获取数据。但是调用是异步的,我在执行planProviderMode: defaultMode.value代码后收到一个值。

var PlanProviderMode = Backbone.Model.extend({
url: '/rest/enrollment/step/plan-provider-mode'
});
var defaultMode = new PlanProviderMode;

defaultMode.fetch({
success: function() {
  // recieve correct data
}
});

var formItems = new Backbone.Form({
template: tpl,
className: 'wizard-content',
schema: {
  planProviderMode: {
    template: formTpl,
    type: 'Radio',
    options: [
      {
        label: 'By Plan',
        val: 'BY_PLAN',
        custom: {
          img: '../resources/img/by-plan.jpg'
        }
      },
      {
        label: 'By Provider',
        val: 'BY_PROVIDER',
        custom: {
          img: '../resources/img/by-provider.jpg'
        }
      }
    ]
  }
},
//here i put the default value
data: {
  planProviderMode: defaultMode.value
}
});

如何将获取的值设置为表单。

如果问题描述得不好,请告诉我。感谢。

2 个答案:

答案 0 :(得分:0)

你应该在success callback函数中编写这样的代码,只有在获取请求成功完成后才会执行。

var PlanProviderMode = Backbone.Model.extend({
url: '/rest/enrollment/step/plan-provider-mode'
});
var defaultMode = new PlanProviderMode;

defaultMode.fetch({
success: function() {
  // recieve correct data
//here you put the default value
data: {
  planProviderMode: defaultMode.value
}
}
});

var formItems = new Backbone.Form({
template: tpl,
className: 'wizard-content',
schema: {
  planProviderMode: {
    template: formTpl,
    type: 'Radio',
    options: [
      {
        label: 'By Plan',
        val: 'BY_PLAN',
        custom: {
          img: '../resources/img/by-plan.jpg'
        }
      },
      {
        label: 'By Provider',
        val: 'BY_PROVIDER',
        custom: {
          img: '../resources/img/by-provider.jpg'
        }
      }
    ]
  }
}

});

答案 1 :(得分:0)

Backnone有一个名为"解析"的功能。在这种情况下可以帮助你。

在服务器的数据填充模型之前,将始终从主干调用此函数。

采用read in parse方法。

这里有一个答案。 how to override Backbone's parse function?

希望有所帮助