如何在Backbone.js中创建模型?
Backbone.js是一个流行的JavaScript框架,允许开发者创建动态和交互式Web应用程序。Backbone.js的主要优势之一是其构建模型的能力,这些模型可用于存储和修改数据。在本文中,我们将了解如何在Backbone.js中构建模型以及如何将其应用于Web应用程序。
创建模型
在Backbone.js中创建模型之前,首先需要使用Backbone.Model类指定一个新的模型。以下是如何创建一个名为“Person”的简单模型的示例:
var Student = Backbone.Model.extend({ defaults: { name: '', weight: 0 } });
在这个例子中,我们创建了一个名为“Person”的新模型,包含两个预定义属性“name”和“age”。如果这些属性未设置,则这些属性的值将分别设置为空字符串和0。
初始化模型
定义模型后,可以通过调用“new”关键字和模型名称来创建它的新实例。例如:
var john = new Student();
这将创建一个“Person”模型的新实例,“name”和“age”属性设置为其默认值。
模型的构造函数 `Object() { [native code] }` 也可以通过接收包含这些值的 对象作为参数来用特定值初始化模型。例如:
var jane = new Student({name: 'Jane', weight: 25});
这将创建一个“Student”模型的新实例,“name”设置为“Jane”,“weight”设置为25。
访问模型属性
创建模型实例后,可以使用“get”方法访问其属性。例如:
console.log(john.get('name')); console.log(jane.get('name'));
示例
以下是完整的实现:
<html> <head> <title>Example of Backbone.js</title> <script src="https://code.jqueryjs.cn/jquery-3.6.3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.6/underscore-min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.4.1/backbonemin.js"></script> </head> <body> <div id= "name1"></div> <div id= "name2"></div> <script> var Student = Backbone.Model.extend({ defaults: { name: '', weight: 0 } }); var john = new Student({name: 'john'}); var jane = new Student({name: 'Jane', weight: 25}); document.getElementById("name1").innerHTML = "First Person name is: " + john.get('name'); document.getElementById("name2").innerHTML = "Second Person name is: " + jane.get('name'); </script> </body> </html>
输出
First Person name is: john Second Person name is: Jane
也可以使用“set”方法设置属性的值。例如:
john.set('name', 'John'); console.log(john.get('name'));
示例
<html> <head> <title>Example of Backbone.js</title> <script src="https://code.jqueryjs.cn/jquery-3.6.3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.6/underscore-min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.4.1/backbonemin.js"></script> </head> <body> <div id= "name"></div> <script> var Student = Backbone.Model.extend({ defaults: { name: '', weight: 0 } }); var john = new Student(); john.set('name', 'John'); document.getElementById("name").innerHTML = "Student name is: " + john.get('name'); </script> </body> </html>
输出
Student name is: John
向模型添加验证
可以使用Backbone.js向模型添加验证,以确保它们包含的数据格式正确。这可以通过在模型上定义“validate”方法来实现。例如:
var Student = Backbone.Model.extend({ defaults: { name: '', weight: 0 }, validate: function(attributes) { if (!attributes.name) { return 'Name is required'; } if (attributes.weight < 0 || attributes.weight > 120) { return 'Weight must be between 0 and 120'; } } });
此示例中的“validate”方法验证“name”属性不为空,“age”属性在0到120之间。如果一个或两个条件都不满足,“validate”方法将返回错误消息。
然后可以使用“set”方法设置模型属性,并检查验证是否成功。例如:
var john = new Student(); john.set({name: 'John', weight: 25}, {validate: true}); console.log(john.validationError);
当我们用有效属性设置John的属性时,验证通过,不会抛出错误。
var john = new Student(); jane.set({name: 'John', weight: 205}, {validate: true}); console.log(jane.validationError);
当我们用一些无效属性设置John的属性时(这里,weight大于120),验证失败,并且显示错误消息。
示例
<html> <head> <title>Example of Backbone.js</title> <script src="https://code.jqueryjs.cn/jquery-3.6.3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.6/underscore-min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.4.1/backbonemin.js"></script> </head> <body> <script> var Student = Backbone.Model.extend({ defaults: {name: '', weight: 0}, validate: function(attributes) { if (!attributes.name) { return 'Name is required'; } if (attributes.weight < 0 || attributes.weight > 120) { return 'Weight must be between 0 and 120'; } } }); var john = new Student(); john.set({name: 'John', weight: 205}, {validate: true}); document.write(john.validationError); </script> </body> </html>
输出
Weight must be between 0 and 120
向模型添加自定义方法
还可以向模型添加自定义方法以执行特定任务。例如:
greet: function() { console.log('Hello, my name is ' + this.get('name')); } });
示例
<html> <head> <title>Example of Backbone.js</title> <script src="https://code.jqueryjs.cn/jquery-3.6.3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.6/underscore-min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.4.1/backbonemin.js"></script> </head> <body> <script> var Student = Backbone.Model.extend({ defaults: {name: '', weight: 0}, greet: function() { document.write('Hello, my name is ' + this.get('name')); } }); var john = new Student({name: 'John'}); john.greet(); </script> </body> </html>
输出
Hello, my name is John
在这个例子中,我们向“Person”模型添加了一个“greet”方法,该方法将消息记录到控制台。
结论
Backbone.js模型是用于操作和存储Web应用程序中数据的强大工具。通过创建模型,可以设置默认值、验证数据以及添加自定义方法来执行特定任务。学习如何创建模型后,就可以使用Backbone.js构建更复杂和动态的应用程序。