所以我一直在努力建立一个应用程序,现在我想使用它自己的数据适配器集成一个第三方 API。我想以最可重用的方式解决这个问题,所以我用正确的模型注册了这个适配器(coffeescript 警告):
App.Store.registerAdapter 'App.Workauth', DS.GUTSAdapter.extend
但是,事情变得棘手:我想根据 User 模型上设置的两个属性进行查找:
App.User = DS.Model.extend
workauths: DS.hasMany 'App.Workauth'
token: DS.attr 'string'
ldap: DS.attr 'string'
App.Workauth = DS.Model.extend
worker: DS.belongsTo 'App.User'
使用令牌和 ldap 我们可以发出 API 请求,Workauths 的适配器看起来像这样:
DS.GUTSAdapter = DS.Adapter.extend Ember.Evented,
findWorkauths: (user, name, process) ->
token = worker.token
ldap = "#{ user.ldap }"
$.getJSON url, \
ldap_username: ldap, \
ldap_auth_token: token, \
(data, status, jqxhr)->
workauths=( \
gutsId:workauth.work_auth_id, \
name:workauth.work_auth_name, \
hours:workauth.work_auth_hours, \
due:workauth.work_auth_due_date \
for workauth in data).unique gutsId
process(workauths).load()
如果存在这些绑定,难道不应该像在我的模板中为 User.Workauths {{render 'workauths/index'}} 创建一个出口一样简单吗?理想情况下,我认为它会在渲染时使用父视图中的用户令牌和 ldap 进行查找。
提前致谢!