我一直希望实施正确处理数据传输的方法 ,而不使用 Ember数据。
我目前有 Java后端,可以正确处理'获取'& '发布'数据。
这是我的结构。假设我们使用系统的一部分来处理配置。
这是我的模特:
App.ConfigurationRoute = Ember.Route.extend({
model: function(params) {
return App.Store.configuration('getConfig');
}
});
这是我的控制器(注意我有一个configSubmit的动作,它是从视图传递数据的地方):
App.ConfigurationController = Ember.ObjectController.extend({
// initial value
isExpanded: false,
actions: {
configSubmit: function() {
var data = {
formsDir: this.get('formsDir'),
processDir: this.get('processDir')
}
App.Store.configuration('saveConfig', data);
}
}
});
这是我的查看代码(注意这个帖子发布到我上面的控制器中的configSubmit操作:
<script type="text/x-handlebars" id="configuration">
<div class="process-body">
<div class="processitem form-reader">
<form>
<div class="processitem forms-directory">
<label class="name">Forms Directory:</label>
{{input id="forms-directory" class="form-control configuration-item" type="text" value=formsDir}}
</div>
<div class="processitem process-directory">
<label class="name">Process Directory:</label>
{{input id="process-directory" class="form-control configuration-item" type="text" value=processDir}}
</div>
</form>
</div>
<button type="submit" class="btn btn-submit btn-default" {{action 'configSubmit'}}>Submit</button>
</div>
在此之后我以 App.store 的名义创建一个新的Ember对象,然后在必要时重新打开。以下是一个例子:
App.Store = Ember.Object.extend();
App.Store.reopenClass({
configuration: function( action, data ) {
if (action === 'getConfig') {
return $.getJSON("myurlforgettingdata").then(function(data) {
if (data.config) {
return data.config;
} else {
return [];
}
});
}
if (action === 'saveConfig') {
$.ajax({type: 'POST', url: 'myurltopost', dataType: 'json',
data: {
formsDir: data.formsDir,
processDir: data.processDir,
},
success: function(jsonData) {
},
error: function() {
}
});
}
我的问题是,看看这是一个灵活的策略,不仅是一个宁静的后端,还有一些不受欢迎的后端?
注意我可以传递数据以及商店要执行的操作。
答案 0 :(得分:0)
简答:是的
答案很长:
Ember Data同时很难并且很有帮助。与任何库一样,它为您提供了一系列有趣的功能,但与此同时您又被迫使用它们的api。优点包括但不限于:记录缓存,脏记录检查,回滚,关系,异步关系,承诺准备等等。缺点是它仍然处于测试阶段,关系很棘手,响应很棘手。它是如此棘手的主要原因是缺乏文档,因为它是测试版。
对于那些想要实现所有这些细节或者他们想要的细节的人来说,不使用Ember Data是一个非常好的方法。
我建议你至少包装你的记录&#34;作为Ember.Objects,你可以使用foo.get('property')
。
var foo = {
property: 'value'
};
foo.get('property'); // ERROR get isn't defined on foo
Ember.get(foo, 'property'); // yay w
兽人。 var foo = Ember.Object.create({ 财产:&#39;价值&#39; });
foo.get('property'); // yay, works