EmberJS 创建和删除记录
创建和删除记录
记录是使用Ember.js createRecord 方法创建的,您不能将promises作为关系当前分配。this.store 在控制器和路由中可用。
您也可以使用 DS.Model 的任何实例上的 deleteRecord()删除存储的记录。这会将记录标记为 isDeleted(true/false),也可以使用 save()持久保存已删除的记录。
store.createRecord('routeName',{
//declare the properties
});
在上面的代码中,'routeName'是正在使用的模板的名称,并声明该'routeName'的属性。
例子
<!DOCTYPE html>
<html>
<head>
<title>Emberjs Creating and Deleting Records</title>
<!-- CDN's-->
<script src="/attachements/w3c/handlebars.min.js"></script>
<script src="/attachements/w3c/jquery-2.1.3.min.js"></script>
<script src="/attachements/w3c/ember.min.js"></script>
<script src="/attachements/w3c/ember-template-compiler.js"></script>
<script src="/attachements/w3c/ember.debug.js"></script>
<script src="/attachements/w3c/ember-data.js"></script>
</head>
<body>
<script type="text/x-handlebars" data-template-name="fruits">
<h1>Enter Fruit names to Add</h1>
{{input type="text" value=newTitle action="createFru"}}
{{#each fru in model itemController="fru"}}
<p><b>{{fru.title}}:</b></p>
<button{{action "removeFru"}}>Click To Remove</button>
{{/each}}
</script>
<script type="text/javascript">
Fruits = Ember.Application.create();
Fruits.ApplicationAdapter = DS.FixtureAdapter.extend();
Fruits.Router.map(function () {
//fruits route
this.resource('fruits', { path: '/' });
});
Fruits.FruitsRoute = Ember.Route.extend({
model: function () {
return this.store.find('fru');
}
});
Fruits.Fru = DS.Model.extend({
//data model
title: DS.attr('string')
});
//attach fixtures(sample data) to the model's class
Fruits.Fru.FIXTURES = [{
id: 1,
title: 'Apple'
}];
Fruits.FruController = Ember.ObjectController.extend({
actions: {
removeFru: function () {
var delitem = this.get('model');
delitem.deleteRecord();
delitem.save();
}
}
});
Fruits.FruitsController = Ember.ArrayController.extend({
actions: {
createFru: function () {
// Get the fru title set by the textfield
var title = this.get('newTitle');
// Create the new Fruits model
var fru = this.store.createRecord('fru', {
title: title
});
// Save the new model
fru.save();
}
}
});
</script>
</body>
</html>
输出
让我们执行以下步骤,看看上面的代码如何工作:
将上述代码保存在 models_crte_dlte.html 文件中
在浏览器中打开此HTML文件。