Ember CLI,ember sockets和coffescript
我只與Ember工作了一個月左右,所以沒有承諾,這是這樣做的最好的方式,但我不得不設立灰燼帶有Socket.io和Ember Data的CLI項目。以下是基於我的工作代碼,但以下內容未經過測試。我認爲你需要的所有東西都是99%。好運故障排除!
.jshintrc - 灰燼服務將在你叫喊,如果你不包括在這裏EmberSockets
{
"predef": {
"document": true,
"window": true,
"nameofprojectENV": true,
"EmberSockets": true
},
...
}
Brocfile.js - 進口灰燼套接字
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var app = new EmberApp();
// change this path to where ember-sockets.js is
app.import('vendor/ember-sockets/package/ember-sockets.js');
module.exports = app.toTree();
app.js - 記得替換實際項目名稱的項目名稱
import Ember from 'ember';
import Resolver from 'ember/resolver';
import loadInitializers from 'ember/load-initializers';
Ember.MODEL_FACTORY_INJECTIONS = true;
// every controller using ember sockets must be listed here in the controllers array
var Socket = EmberSockets.extend({
host: 'example.local',
port: 8080,
controllers: [
'example'
// more controllers here
]
});
var App = Ember.Application.extend({
modulePrefix: 'nameofproject',
Resolver: Resolver,
Socket: Socket
});
loadInitializers(App, 'nameofproject');
export default App;
router.coffee - 切記替換nameofproje CT與實際項目名稱
`import Ember from 'ember'`
Router = Ember.Router.extend
location: nameofprojectENV.locationType
Router.map ->
@route 'example'
`export default Router`
型號/ example.coffee
`import DS from 'ember-data'`
Example = DS.Model.extend
name: DS.attr('string')
`export default Example`
路線/ example.coffee
`import Ember from 'ember'`
ExampleRoute = Ember.Route.extend
# set model to be all example records
model: ->
@store.all('example')
setupController: (controller, model) ->
controller.set('model', model)
`export default ExampleRoute`
控制器/ example.coffee
`import Ember from 'ember'`
ExampleController = Ember.Controller.extend
#### properties
examples: (->
# @get('content') gets the model, which in this case, is example (set in route)
@get('content')
).property('content') # watching the model like this might not be right?
#### methods
getExamples: ->
@socket.emit 'pub',
# whatever data you need to pass to the server
data : {examples: true}
# name of the event you want the data returned on
event: "getExamples"
#### sockets
sockets:
# returns examples from server
getExamples: (data) ->
# log the data for fun, also to see that you are getting data back
console.log data
# set controller to @, which is the same as this.
controller = @
# get your array of examples from JSON returned from server
examples = data.examples
examples.forEach (example) ->
# controller instead of @, or it doesn't work
controller.store.push 'example',
# you need ids or this will not work
id: example.id
name: example.name
`export default ExampleController`
模板/ example.coffee
{{#each example in examples}}
{{example.id}} {{example.name}}
{{/each}}
<button {{action getExamples}}>Get Examples</button>
我會建議Chrome Ember Inspector進行故障排除。除此之外,您還可以查看數據模型和記錄。
我們應該使用** store.load(App.Apartment,apartment)**或** store.get('adapter')。load(store,App.Apartment,apartment)**。我只想確保根據您在** [issue 649](https://github.com/emberjs/data/issues/649)**中提出的問題加載數據的方式**以及對* * [在stackover上的類似問題](http://stackoverflow.com/questions/14899224/how-do-you-automatically-serialize-and-load-an-ember-data-object-from-a-json-res )**。我的理解中缺少什麼東西。謝謝。 – brg 2013-03-16 11:27:00
我在最新的ember中使用'store.load(App.Appartment,data)',它工作正常:)讓我知道如果你有任何問題,github問題是陳舊和過時的。 – 2013-03-16 12:13:36
這會導致我遇到的相同問題(只是在文檔中放置了空記錄)。您還需要使用'var store = this.get('store');' – Chad 2013-03-16 12:16:17