1

最初に私のユースケースを説明しましょう。

ユーザーとして、ジョブを作成できる必要があります。このジョブの作成中に、作業分野を指定する必要があります。これらのフィールドは、REST API から動的にロードする必要があります。EmberJS を初めて使用するので、JobNewController とルートで作業しているため、これらのフィールドにどのようにロードする必要があるかはわかりません。

どうにかルートにロードする必要がありますか? 私はこのようなことを試みてきましたが、それを機能させることができません。また、とにかく何をしているのかよくわかりません。

MyApp.JobsRoute = Ember.Route.extend
  setupController: (controller) ->
    controller.set 'serviceFields', MyApp.ServiceField.find()

このテンプレートの使用

<p>Creating a new job</p>
<div class="ui input">

  Select a service field
  {{#each serviceFields }}
    {{name}}   sdf
  {{/each}}

</div>

私もコントローラーでこれをやってみました。

MyApp.JobsNewController = Ember.ObjectController.extend serviceFields: MyApp.ServiceField.find()

しかし、これは生成され、エラーになります

Assertion failed: Your application does not have a 'Store' property defined. Attempts to call 'find' on model classes will fail. Please provide one as with 'YourAppName.Store = DS.Store.extend()' 

Store が初期化される前にコントローラー コードが実行されると思います。

これをどのように処理すればよいですか?

4

1 に答える 1

0

モデルを取得する適切な方法は、ストアを使用してそのモデル タイプを見つけることです。(私のcoffeescriptを許してください、私はそれを行うためにコンバーターを使用しました)

MyApp.JobsRoute = Ember.Route.extend(setupController: (controller, model) ->

  # return does nothing here
  # this._super(controller,model); would do the default
  controller.set "serviceFields", []
  promise = @get("store").find("serviceField")
  promise.then (records) ->
    controller.set "serviceFields", records

)

これはより一般的なアプローチです。

MyApp.JobsRoute = Ember.Route.extend(model: ->
  @get("store").find "serviceField"
)
于 2013-10-31T16:16:13.610 に答える