gpt4 book ai didi

javascript - 如何使用 ember-model 定义枚举

转载 作者:数据小太阳 更新时间:2023-10-29 06:12:05 24 4
gpt4 key购买 nike

在我的 ember-model 模型中,我需要从枚举中设置一个 String 属性。ember-model 有可能吗?

例如,我想要一个 Book 模型:

App.Book({
id: Ember.attr(),
title: Ember.attr( 'String' ),
author: Ember.attr( 'String' ),
status: App.BookStatus
});

App.Book.Status 作为具有 3 个可能值的枚举 "FREE", "BORROW", "LOST" 并使用它:

var myBook = App.Book.create({
title:'myBook',
author:'fred',
status: App.BookStatus.FREE
})

我需要等同于 Java 枚举功能

public enum BookStatus {
FREE, BORROW, LOST
}

class Book {
BookStatus bookStatus;
}

Book bookInstance = new Book();
bookInstance.bookStatus=BookStatus.LOST;

最佳答案

如文档中所述:

In Ember.js, an Enumerable is any object that contains a number of child objects, and which allows you to work with those children using the Ember.Enumerable API.

例如:

var players = ["Alex", "Paul", "Tom"];

players.forEach(function(item, index) {
console.log('Player %@: %@'.fmt(index+1, item));
});

会输出:

// Player 1: Alex
// Player 2: Paul
// Player 3: Tom

要使您自己的自定义类可枚举,您需要两项:

要在 ember 中创建您自己的可枚举类/对象,您可以使用 Ember.Enumerable mixin 并遵循这两个要求:

  • 您必须有一个length 属性。只要您的可枚举对象中的项目数发生变化,此属性就应该发生变化。如果您将其与 Ember.Object 一起使用子类,您应该确保使用内置的 set() 方法更改 length 属性。

  • 如果你必须实现nextObject()

实现这两种方法后,应用 Ember.Enumerable混合到您的类中,您将能够像任何其他集合一样枚举对象的内容。

伪代码:

App.MyEnumObject = Ember.Object.extend(Ember.Enumerable, {
length: 0,
nextObject: function() {
//return the next object of the enumeration
}
//more methods and properties
});

参见 here有关 ember 中可枚举的更多信息。

希望对您有所帮助。

编辑

由于我们使用的是 javascript,因此您可以通过更简单的方式来完成您想要做的事情。例如:

App.bookStatus = {
FREE: "FREE",
BORROW: "BORROW",
LOST: "LOST"
}

var myBook = App.Book.create({id: 1, title: 'myBook', author: 'fred', status: App.bookStatus.FREE})

关于javascript - 如何使用 ember-model 定义枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18063605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com