WebOS 3.0 从函数访问 UI
WebOS 3.0 Access to UI from function
我无法在 WebOS 3.0 中从 function:onComplete 访问 enyo Ui 组件。
buttonTapped: function(inSender, inEvent) {
console.log("Button is clicked");
this.$.txt.setContent(inSender.name + " tapped."); // This worked
var request = webOS.service.request("luna://com.webos.service.tv.systemproperty", {
method: "getSystemInfo",
parameters: {"keys": ["modelName", "firmwareVersion", "UHD", "sdkVersion"]},
onComplete: function (inResponse) {
var isSucceeded = inResponse.returnValue;
if (isSucceeded){
console.log("Result: " + JSON.stringify(inResponse));
$.txt.setContent("Result: "+JSON.stringify(inResponse)); // This is not worked
}
}
});
...
控制台输出
Button clicked
Result{"modelName":"WEBOS1","firmwareVersion":"03.00.00","UHD":"false","sdkVersion":"03.00.00","returnValue":true}
Uncaught TypeError: Cannot read property 'txt' of undefined
我没有找到任何关于此的文档。
错误的原因是您的回调函数没有在组件的上下文中执行。 this
不是您的组件(更不用说您在 $.txt...
前面缺少关键字 this
)。
您需要做的是绑定回调函数的上下文或使用它在包含对 this
.
的引用的变量上创建闭包
这种情况很常见,因此 Enyo 为此提供了一个实用方法:this.bindSafely
。
尝试以下操作:
onComplete: this.bindSafely(function (inResponse) {
var isSucceeded = inResponse.returnValue;
if (isSucceeded){
console.log("Result: " + JSON.stringify(inResponse));
this.$.txt.setContent("Result: "+JSON.stringify(inResponse));
}
})
参见:http://enyojs.com/docs/latest/#/kind/enyo/CoreObject/Object:bindSafely
我无法在 WebOS 3.0 中从 function:onComplete 访问 enyo Ui 组件。
buttonTapped: function(inSender, inEvent) {
console.log("Button is clicked");
this.$.txt.setContent(inSender.name + " tapped."); // This worked
var request = webOS.service.request("luna://com.webos.service.tv.systemproperty", {
method: "getSystemInfo",
parameters: {"keys": ["modelName", "firmwareVersion", "UHD", "sdkVersion"]},
onComplete: function (inResponse) {
var isSucceeded = inResponse.returnValue;
if (isSucceeded){
console.log("Result: " + JSON.stringify(inResponse));
$.txt.setContent("Result: "+JSON.stringify(inResponse)); // This is not worked
}
}
});
...
控制台输出
Button clicked Result{"modelName":"WEBOS1","firmwareVersion":"03.00.00","UHD":"false","sdkVersion":"03.00.00","returnValue":true} Uncaught TypeError: Cannot read property 'txt' of undefined
我没有找到任何关于此的文档。
错误的原因是您的回调函数没有在组件的上下文中执行。 this
不是您的组件(更不用说您在 $.txt...
前面缺少关键字 this
)。
您需要做的是绑定回调函数的上下文或使用它在包含对 this
.
这种情况很常见,因此 Enyo 为此提供了一个实用方法:this.bindSafely
。
尝试以下操作:
onComplete: this.bindSafely(function (inResponse) {
var isSucceeded = inResponse.returnValue;
if (isSucceeded){
console.log("Result: " + JSON.stringify(inResponse));
this.$.txt.setContent("Result: "+JSON.stringify(inResponse));
}
})
参见:http://enyojs.com/docs/latest/#/kind/enyo/CoreObject/Object:bindSafely