如何在钛中获得 Alloy.Models.room_module 的属性
how can I get the attribute of Alloy.Models.room_module in titanium
这是我的代码:
room_module = Alloy.Models.room_module
console.info "=========room_module======="
console.info room_module
console.info "=========room_module.get room_1======="
console.info room_module.get "room_1"
console.info "=========room_module.room_1======="
console.info room_module.room_1
这是控制台输出:
[iphone, 8.2, 192.168.1.126] =========room_module=======
[INFO] [iphone, 8.2, 192.168.1.126] {
"room_1": "客餐厅",
"room_2": "卧室",
"room_3": "厨房",
"room_4": "room",
"room_5": "room",
"room_6": "room"
}
[INFO] [iphone, 8.2, 192.168.1.126] =========room_module.get room_1=======
[INFO] [iphone, 8.2, 192.168.1.126] 客餐厅
[INFO] [iphone, 8.2, 192.168.1.126] =========room_module.room_1=======
[INFO] [iphone, 8.2, 192.168.1.126]
为什么room_module.room_1取不到值?我想在我的 xml 文件中显示 room_module.room_1。我该怎么做?
如您所知,Alloy 模型继承自 Backbone。当您调用 Model.get 函数时,这是 what's happening:
// Get the value of an attribute.
get: function(attr) {
return this.attributes[attr];
},
当您调用 console.info(Model) 时,它可能正在执行 Model.toJSON(它没有 toString 方法):
// Return a copy of the model's `attributes` object.
toJSON: function(options) {
return _.clone(this.attributes);
},
我看到两种可能性:
room_module.attributes['room_1']
room_module.toJSON().room_1
在 Alloy docs 中没有说明在 xml 文件中访问您的模型。您需要从控制器访问它。
backbone js使用属性对象来存储属性。在您的情况下,您需要执行 roommodule.get('room1')。为了保持一致,使用 get 和 set 而不是直接通过 roommodule.attributes.room1 访问始终是一个好习惯。
因为它可能会触发模型内部的一些事件。
这是我的代码:
room_module = Alloy.Models.room_module
console.info "=========room_module======="
console.info room_module
console.info "=========room_module.get room_1======="
console.info room_module.get "room_1"
console.info "=========room_module.room_1======="
console.info room_module.room_1
这是控制台输出:
[iphone, 8.2, 192.168.1.126] =========room_module=======
[INFO] [iphone, 8.2, 192.168.1.126] {
"room_1": "客餐厅",
"room_2": "卧室",
"room_3": "厨房",
"room_4": "room",
"room_5": "room",
"room_6": "room"
}
[INFO] [iphone, 8.2, 192.168.1.126] =========room_module.get room_1=======
[INFO] [iphone, 8.2, 192.168.1.126] 客餐厅
[INFO] [iphone, 8.2, 192.168.1.126] =========room_module.room_1=======
[INFO] [iphone, 8.2, 192.168.1.126]
为什么room_module.room_1取不到值?我想在我的 xml 文件中显示 room_module.room_1。我该怎么做?
如您所知,Alloy 模型继承自 Backbone。当您调用 Model.get 函数时,这是 what's happening:
// Get the value of an attribute.
get: function(attr) {
return this.attributes[attr];
},
当您调用 console.info(Model) 时,它可能正在执行 Model.toJSON(它没有 toString 方法):
// Return a copy of the model's `attributes` object.
toJSON: function(options) {
return _.clone(this.attributes);
},
我看到两种可能性:
room_module.attributes['room_1']
room_module.toJSON().room_1
在 Alloy docs 中没有说明在 xml 文件中访问您的模型。您需要从控制器访问它。
backbone js使用属性对象来存储属性。在您的情况下,您需要执行 roommodule.get('room1')。为了保持一致,使用 get 和 set 而不是直接通过 roommodule.attributes.room1 访问始终是一个好习惯。
因为它可能会触发模型内部的一些事件。