【问题标题】:Emberjs linkTo helper not loading modelEmberjs 链接到助手不加载模型
【发布时间】:2013-08-21 07:00:25
【问题描述】:

我正在构建这个 Emberjs 应用程序,看起来很像船形,但由于某种原因,当我从“患者”视图中点击 linkTo 时,Ember 加载了“患者”视图,而不是模型。但是,如果我在“/:patient_id”路径重新加载页面,模型就会加载。我错过了什么?

DS.RESTAdapter.map 'App.InboxRecording',
  recording: {embedded: 'always'}

App.Store = DS.Store.extend
  adapter: DS.RESTAdapter.create()    

App.Router.map ()->
  this.resource(
    'patients', {path: '/' }, ->
    this.resource(
      'patient', {path: '/:patient_id' }
    )
  )
App.PatientsRoute = Ember.Route.extend({
  model: () ->
    App.Patient.find()
});

App.PatientRoute = Ember.Route.extend({
  model: (params) ->
    App.Patient.find(params.patient_id)
});

App.Patient = DS.Model.extend({
  first_name: DS.attr('string'),
  last_name: DS.attr('string'),
  last_ecg_taken: DS.attr('date'),
  date_of_birth: DS.attr('date'),
  email: DS.attr('string'),
  gender: DS.attr('string'),
  height: DS.attr('string'),
  weight: DS.attr('string'),
  medications: DS.attr('string'),
  smoker: DS.attr('string'),
  inbox_recordings: DS.hasMany('App.InboxRecording')
  //medical_conditions: DS.attr('string'),
});

App.InboxRecording = DS.Model.extend({
  flagged: DS.attr('boolean'),
  read: DS.attr('boolean'),
  overread: DS.attr('boolean'),
  patient: DS.belongsTo('App.Patient'),
  recording: DS.belongsTo('App.Recording')
  //filter: DS.hasMany('App.Filter')
});

App.Recording = DS.Model.extend({
  activities: DS.attr('string'),
  avg_heart_rate: DS.attr('string'),
  recorded_at: DS.attr('date'),
  symptoms: DS.attr('string'),
  inbox_recording: DS.belongsTo('App.InboxRecording')
});



<script type="text/x-handlebars" data-template-name="application">
{{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="patients">
  <div class="container">
    <div class="row">

      <div class="span8">
        <div id="patient-lookup" class="panel">
          <h2>Patient Lookup</h2>
          <label for="lookup">Last Name</label>
          <input id="lookup" name="lookup" placeholder="Enter patient's last name"/>
          <button class="btn btn-primary">Search</button>
        </div>
        <table class="table">
          <thead>
            <tr>
              <th>First Name</th>
              <th>Last Name</th>
              <th>Last ECG Taken</th>
              <th>DOB</th>
            </tr>
          </thead>
          <tbody>
            {{#each controller}}
            <tr>
              <td>{{#linkTo 'patient' this}}{{first_name}}{{/linkTo}}</td>
              <td>{{last_name}}</td>
              <td>{{last_recording_taken }}</td>
              <td>{{date_of_birth }}</td>
            </tr>
            {{/each}}
          </tbody>
        </table>
      </div>

    </div>
  </div>
</script>

<script type="text/x-handlebars" data-template-name="patients/index">
</script>

<script type="text/x-handlebars" data-template-name="patient">
<div class="link">
{{#linkTo 'patients'}}Back to all patients{{/linkTo}}
</div>

<h1>Email: {{email}}</h1>
{{#if inbox_recordings.length}}
  <div class="container">
    <table class="table">
      <thead>
        <tr>
          <th>Flagged</th>
          <th>Date & Time</th>
          <th>Symptoms</th>
          <th>Activities</th>
          <th>BPM</th>
          <th>View PDFS</th>

        </tr>
      </thead>
      <tbody>
      {{#each inbox_recording in inbox_recordings}}
        <tr {{bindAttr class="inbox_recording.read:isRead"}}>
          <td {{bindAttr class="inbox_recording.flagged:isFlagged"}}>{{view Ember.Checkbox checkedBinding="inbox_recording.flagged" class="toggle"}}</td>
          {{#with inbox_recording.recording}}
            <td>{{recorded_at}}</td>
            <td>{{symptoms}}</td>
            <td>{{activities}}</td>
            <td>{{avg_heart_rate}}</td>
          {{/with}}
          <td>
            {{#each filter in recording.filter }}
              <a {{action 'markAsRead' filter}}{{bindAttr href="filter.link"}}>{{filter.name}}</a>
            {{/each}}
          </td>
          <td>{{inbox_recording.overread}}</td>
        </tr>
      {{/each}}
      </tbody>
    </table>
  </div>
{{/if}}
</script>

【问题讨论】:

  • 您是否在控制台中看到任何错误?
  • 这里也有一个小提琴的链接http://jsfiddle.net/jpJ2c/
  • 感谢您的提琴,但它与您的问题中的代码相同,并且应用程序不完整,因此很难运行它并查看控制台中是否显示任何错误

标签: javascript ember.js single-page-application


【解决方案1】:

我认为这应该可行。我只是有点怀疑。请试试这个:

{{#each patient in controller.model}}
  <td>{{#linkTo 'patient' patient}}{{patient.first_name}}{{/linkTo}}</td>
   ...
{{/each}}

我认为您的方法可能无法将正确的对象传递给 linkTo 助手。

【讨论】:

    【解决方案2】:

    好的,所以问题很糟糕,我需要关闭它,因为问题在于模型和服务器返回的响应。我的坏:\

    【讨论】:

      猜你喜欢
      • 2011-01-29
      • 2016-10-14
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      相关资源
      最近更新 更多