Javascript 不使用余烬数据的余烬JS
我一直想实现一种方法,在不使用余烬数据的情况下正确处理数据传输 我目前有一个Java后端,可以正确处理“获取”和“发布”数据 这是我的结构。假设我们使用系统中处理配置的一部分 这是我的模型:Javascript 不使用余烬数据的余烬JS,javascript,jquery,ajax,ember.js,frameworks,Javascript,Jquery,Ajax,Ember.js,Frameworks,我一直想实现一种方法,在不使用余烬数据的情况下正确处理数据传输 我目前有一个Java后端,可以正确处理“获取”和“发布”数据 这是我的结构。假设我们使用系统中处理配置的一部分 这是我的模型: App.ConfigurationRoute = Ember.Route.extend({ model: function(params) { return App.Store.configuration('getConfig'); } }); 这是我的控制
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>
我的问题是,这是否是一种灵活的策略,不仅适用于restful后端,也适用于非restful后端
请注意,我可以传递数据以及商店将执行的操作。简短回答:是
长答覆:
余烬数据既困难又有用。与任何库一样,它为您提供了大量有趣的功能,但与此同时,您不得不使用它们的api。优点包括但不限于:记录缓存、脏记录检查、回滚、关系、异步关系、承诺就绪等。缺点是它仍处于测试阶段,关系复杂,响应复杂。它如此棘手的主要原因是缺乏文档,因为它是测试版
对于那些想要实现所有这些细节或他们想要的细节的人来说,不使用余烬数据是一个非常好的方法
我建议您至少将记录包装为Ember.Objects,这样您就可以使用foo.get'property了
Works。
var foo=Ember.Object.create{
属性:“值”
};
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() {
}
});
}
var foo = {
property: 'value'
};
foo.get('property'); // ERROR get isn't defined on foo
Ember.get(foo, 'property'); // yay w
foo.get('property'); // yay, works