作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个域类
class UserItem(var simpleItem: Item, var id: String, var status: String, var price: Int) {
var upperLimit: Int = 0
var lowerLimit: Int = 0
/* methods here */
}
class Trades {
val saleableItems: ArrayList<UserItem> = ArrayList()
val soldAwaitingItems: ArrayList<UserItem> = ArrayList()
/* methods */
}
saleableItems
和
soldAwaitingItems
从
Trades
内部更新
saleableItems
使用
TableView
这样我就可以在不将属性转换为 TornadoFX 属性的情况下绑定(bind)数据和 View ,所以我包装了
UserItem
至
ItemViewModel
class UserItemModel(uItem: UserItem) : ItemViewModel<UserItem>() {
val simpleItem = bind { item?.observable(UserItem::simpleItem) }
val id = bind { item?.observable(UserItem::id) }
val status = bind { item?.observable(UserItem::status) }
val price = bind { item?.observable(UserItem::price) }
val upperLimit = bind { item?.observable(UserItem::upperLimit) }
val lowerLimit = bind { item?.observable(UserItem::lowerLimit) }
init {
item = uItem
}
}
Trades
至
ItemViewModel<Trades>
所以我有类似的东西
class TradesModel : ItemViewModel<Trades>() {
val saleableItems: ObservableList<UserItemModel>
val soldAwaitingItems: ObservableList<UserItemModel>
}
View
中使用它
class TradesView : View("My View") {
val tradesModel: TradesModel by inject()
tableview(tradesModel.saleableItems) {
column("Name", UserItemModel::simpleItem)
column("Price", UserItemModel::price)
column("Lower limit", UserItemModel::lowerLimit)
column("Upper limit", UserItemModel::upperLimit)
}
}
最佳答案
你有没有尝试过这样的事情?
class UserItemModel(uItem: UserItem) : ItemViewModel<UserItem>() {
// Same way you defined previously.
}
class TradesViewModel {
val saleableItems: SimpleListProperty<UserItemModel>(FXCollections.observableArrayList())
val soldAwaitingItems: SimpleListProperty<UserItemModel>(FXCollections.observableArrayList())
}
class TradesView : View("My View") {
val tradesModel: TradesViewModel by inject()
init {
with(root) {
tableview(tradesModel.saleableItems) {
column("Name", UserItemModel::simpleItem)
column("Price", UserItemModel::price)
column("Lower limit", UserItemModel::lowerLimit)
column("Upper limit", UserItemModel::upperLimit)
}
}
}
}
UserItemModel
作为一个简单的数据类 - 无需扩展
ItemViewModel
或执行属性绑定(bind)。
关于kotlin - 将域类包装到 ItemViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241125/
我有一个域类 class UserItem(var simpleItem: Item, var id: String, var status: String, var price: Int) {
我有课 data class Patient( val birthNumber: String , val firstName: String , val lastName: S
我正在尝试通过注入(inject)添加模型以查看 val model = PersonModel by inject() 但错误: 'PersonModel' does not have a comp
我有课User和 ItemViewModel为了它。 class User(name: String, type: Int, isAdmin: Boolean) { var name by p
我是一名优秀的程序员,十分优秀!