在ember js

时间:2017-02-21 14:37:17

标签: ember.js

我是ember js技术的新手。我在ember应用程序中遇到了一些问题。我的ember应用程序中有一些文件如下(部分代码如下): -

sample.hbs

    <div>
    <div>
    {{text-field id="countryid" type="text"}}
    </div>
    {{state-component model=model}}
    </div>

状态component.hbs

    {{#if isFlag}}
    <div>
    {{text-field id="stateid" type="text"}}
    </div>
    {{else}}
    {{/if}}

状态component.js

    var flag;
    export default Ember.Component.extend({
    isFlag: Ember.computed('flag', function() {
    flag = this.get('model').get('flag');
    return Ember.isEqual(flag, 'true');
})
    })

sample.js

    export default Ember.Route.extend({ 
    model(){
    return info.create({"flag": ""})
    }});

    afterModel(){
    Ember.$.ajax({    
    url: `${ENV.host}/retrieveInfo`,
    type: 'POST',
    data: `id=geoid`,
    success: (data) => {
      this.modelFor('sample').setProperties({ 
          "flag": data.flag
      });
    }
    }

此处页面加载retrieveInfo ajax调用发生&amp;该标志从webservice调用返回。基于标志值,即如果为真,那么只有我必须显示状态文本框。但是,由于页面呈现第一个和下一个ajax调用发生,我没有页面加载的标志值。即,当呈现状态组件时,它不包含标志值。我已经在诸如willRender(),didRender()之类的不同事件中移动了ajax调用。但它没有帮助。有人能解决吗?我可以在哪里放置ajax调用,以便我可以在我的state-component中获取标志值?

1 个答案:

答案 0 :(得分:0)

始终用代码询问您尝试过的问题。如果可能,请包括ember-twiddle复制。通过这种方式,您无法创建名为component1的组件,因为它应包含-

在官方ember-guides

上仔细阅读

在示例路径的模型钩子中定义它,它将在settings.hbs中可用。

model(){
  return Ember.$.getJSON('url');
}

您可以将模型发送到my-component,并且可以在my-component中访问。

{{my-component model=model }}