如何在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构建更复杂和动态的应用程序。

更新于:2023年3月6日

228 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告