在尚未持久化到后端的路由模型的上下文中(它的 id 仍然是null,我们还没有调用save),如果我们想丢弃该记录,使用unloadRecord或更正确吗destroy?
上下文:当表单转换离开但既没有保存也没有取消时使用。unloadRecord我是 ember 的新手,我对模型私有但商店不私有这一事实感到有点困惑。这可能是显而易见的,但我也不肯定何时将对象称为模型与记录是正确的(我假设它们有时可以互换使用,但如果它们是现有实例,则将它们称为记录在技术上是正确的)。
I\xe2\x80\x99m 尝试创建一个 Ember 服务,该服务调用 API 来查询数据库中的数据。我想创建此服务,以便我可以在各种控制器、组件和路由中注入数据集(对象数组)。我\xe2\x80\x99m不确定这是否是ember\xe2\x80\x99s\xe2\x80\x98最佳实践\xe2\x80\x99之一,但它似乎会在学习框架时解决一个直接问题。对于这个示例,我有一个名为 \xe2\x80\x98get-data.js\xe2\x80\x99 的服务,并且我有一个名为 \xe2\x80\x98responsive-table.js\xe2\x80\x99 的组件,我想要可以访问我从数据库收到的对象数组。每次我需要这个数组时,我是否应该使用服务向 api 发出 ajax 请求?我应该使用 \xe2\x80\x98ember-data\xe2\x80\x99 并调用 \xe2\x80\x98store\xe2\x80\x99 并使用 \xe2\x80\x98findAll\xe2\x80\x99 方法?每当我尝试调用商店并注释掉 \xe2\x80\x98findAll\xe2\x80\x99 的响应时,我都会得到一个类对象?使用 ember.js 和 \xe2\x80\x98ember-data\xe2\x80\x99 访问组件和控制器中的服务器数据的最佳方法是什么
\n\n服务
\n\n// service \n\nimport Ember from \'ember\';\n\nconst {\n Service, inject: { service }, computed, run, set, get\n} = Ember;\n\nexport default Service.extend({\n ajax: service(),\n\n usingJQueryAjax() {\n let data = $.get(\'/api/data\').then(function(result ) {\n console.log("right here: ", result );\n return result;\n });\n\n return data\n }\n\n});\nRun Code Online (Sandbox Code Playgroud)\n\n组件
\n\n// component \n\nimport Ember from \'ember\';\n\nconst {\n …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
Pult.Zone = DS.Model.extend({
name: DS.attr('string'),
authoritative: DS.attr('boolean'),
user_id: DS.attr('number'),
rulesets: DS.hasMany('Pult.Ruleset')
});
Pult.RESTAdapter.map('Pult.Zone', {
primaryKey: 'name',
rulesets: { key: 'rulesetIds' }
});
Run Code Online (Sandbox Code Playgroud)
但是,似乎没有正确地接收主键.我已经呈现了所有区域的列表.
这是一个测试用例:
zones = Pult.store.findAll(Pult.Zone);
zones.get('length'); // Returns 10
zones = Pult.store.findAll(Pult.Zone);
zones.get('length'); // Returns 20
Run Code Online (Sandbox Code Playgroud)
因此,每次从服务器加载区域时,它都会将它们添加到本地列表,因为它不会将它们识别为已存在.有什么方法可以解决这个问题,还是我必须尝试模拟一些代理键?
我想对一个由ember-data获取的数组或用户进行排序.我无法弄清楚对数组进行排序lastName.以下代码不起作用.我该如何解决?
app.js
App.UsersRoute = Ember.Route.extend({
model: function() {
return App.User.find();
}
});
App.UsersController = Ember.ArrayController.extend({
sortProperties: ['lastName'],
sortAscending: true
})
Run Code Online (Sandbox Code Playgroud)
的index.html
<script type="text/x-handlebars" data-template-name="users">
<table class='table table-striped'>
{{#each model itemController="user"}}
<tr>
<td>{{lastName}}</td>
</tr>
{{/each}}
</table>
</script>
Run Code Online (Sandbox Code Playgroud) 是否有可能在Ember 1.0.0-rc.5的视图中根据其属性找到单个记录?我一直在寻找好几天,但我仍然找不到有用的东西.
例如,我希望能够这样做:
App.Tag.find({name: 'some tag'}) 它应该返回一个记录,而是返回一个数组.
name字段对于所有标记都是唯一的,因此它应该只返回一个对象.
如何才能做到这一点?
谢谢
有没有办法直接在索引页面的主要javascript中调用Ember数据函数,例如serialize 函数?
我试过了DS.Serializer.serialize(myrecord),但是我收到了这个错误:has no method 'serialize'.
附加问题:
如何直接调用RESTAdapter的序列化版本?他们对通用序列化进行了一些修改.
我试图在Apache tomcat上加载我的ember-cli内置服务器应用程序.
我使用生成模式构建我的应用程序
余烬建设 - 环境生产
我将我的/ dist文件夹中的文件移动到我的apache tomcat / webapps文件夹启动了我的apache服务器但是当我转到URL时:"localhost:8081/index.html"
页面是空白的,尽管它与内置服务器完美配合.使用Ember检查器,我可以看到已定义但无法查看任何输出的路径.
我按照本指南http://thetechcofounder.com/getting-started-with-ember-js-using-ember-cli/# = 来创建我的ember-cli应用程序,任何帮助都会很棒.
我必须对我的应用程序进行更改,我的团队希望从JSON数据中删除根密钥.但是,我真的很喜欢开箱即用的感觉,但我的团队认为这是一个非标准的REST协议,所以我们需要远离它.
而不是更改我的序列化程序以适应这一点,是否有一个我可以反对的论据,以便我可以继续使用这个开箱即用?或者他们是否正确,因为恩伯不应该要求这个?
Store.push(类型,数据)已被弃用.请提供JSON-API文档对象作为store.push的第一个也是唯一的参数
我刚刚更新为ember 1.13.2和ember-data 1.13.3,我现在收到了很多本帖子标题中提到的弃用消息.我不知道是什么导致它出现,Ember Inspector的Deprecations选项卡没有显示我的代码在问题所在的位置.
如果有人能够向我解释这个消息意味着什么以及我需要做些什么来解决它,我将不胜感激.
谢谢.
更新:
我的自定义应用程序适配器如下所示
// app/adapters/application.js
import ActiveModelAdapter from 'active-model-adapter';
export default ActiveModelAdapter.extend({
host: 'http://dev.mydomain.com',
namespace: 'api/v1',
});
Run Code Online (Sandbox Code Playgroud)
它使用ActiveModelAdapter附加组件作为不同的弃用消息,说明ActiveModelAdapter将不再与v2.0.0中的ember-data捆绑在一起.但是,我已经尝试使用ember-data适配器和add on我的代码,并获得有关Store.push的相同弃用消息.
有一些堆栈跟踪,因为有相同弃用的多个版本,但这里有一对:
DEPRECATION: store.push(type, data) has been deprecated. Please provide a JSON-API document object as the first and only argument to store.push.
at ember$data$lib$system$store$$Service.extend.push (http://localhost:4200/assets/vendor.js:81014:17)
at http://localhost:4200/assets/vendor.js:83253:17
at Array.forEach (native)
at Ember.Mixin.create._extractEmbeddedHasMany (http://localhost:4200/assets/vendor.js:83251:68)
at null.<anonymous> (http://localhost:4200/assets/vendor.js:83219:22)
at http://localhost:4200/assets/vendor.js:84254:20
at cb (http://localhost:4200/assets/vendor.js:27380:11)
at OrderedSet.forEach (http://localhost:4200/assets/vendor.js:27163:11)
at Map.forEach (http://localhost:4200/assets/vendor.js:27384:18)
DEPRECATION: store.push(type, data) has been deprecated. Please provide a …Run Code Online (Sandbox Code Playgroud) 我是新来的余烬.任何人都可以帮助我如何将选定的值作为参数传递给动作处理程序'onSelectEntityType'.我尝试了以下内容,我能够触发操作.
<select class="form-control" id="entityType" {{action 'onSelectEntityType' on='change'}} >
<option value="">Select</option>
{{#each model as |entityType|}}
<option value="{{entityType.id}}">{{entityType.entityTypeName}}</option>
{{/each}}
</select>
Run Code Online (Sandbox Code Playgroud)
组件js文件
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
onSelectEntityType(value) {
console.log(value)
}
}
});
Run Code Online (Sandbox Code Playgroud) ember-data ×10
ember.js ×10
ember-cli ×2
javascript ×2
components ×1
jquery ×1
node.js ×1
tomcat ×1