我在Angular 5中设置了一段时间后隐藏元素的超时:
this.showElement = true;
setTimeout(function () {
console.log('hide');
this.showElement = false;
}, 2000);
Run Code Online (Sandbox Code Playgroud)
但是,这不会更新视图.该console.log给我一个输出,所以超时肯定能行.
我发现在Angularjs你需要打电话$apply才能开始摘要,所以我猜我只需要找到Angular 5等效的方法.
我们使用google cloud功能作为webhook构建了一个Dialogflow代理,该代理可以正常运行直到昨天晚上。那时,我导出了代理,之后又重新导入,它工作了一段时间。
停止工作的是,即使根据UI和原始API响应设置了上下文,agent.context.get('...');(也agent.getContext('...'))确实会返回undefined。
例如,我有一个意图,该意图具有必需的slot shop,启用了用于填充插槽的webhook。当我测试代理时,命名的意图info正确匹配,并且上下文info_dialog_params_store似乎也存在:
根据原始API响应,这是输出上下文的一部分:
"outputContexts": [
{
"name": "projects/MYAGENTNAME/agent/sessions/0b753e8e-b377-587b-3db6-3c8dc898879b/contexts/info_dialog_params_store",
"lifespanCount": 1,
"parameters": {
"store": "",
"store.original": "",
"kpi": "counts",
"date_or_period": "",
"kpi.original": "trafico",
"date_or_period.original": ""
}
}
Run Code Online (Sandbox Code Playgroud)
在webhook中,我将意图正确地映射到js函数:
let intentMap = new Map();
intentMap.set('info', info);
agent.handleRequest(intentMap);
Run Code Online (Sandbox Code Playgroud)
info函数的第一行如下所示:
function info(agent) {
store_context = agent.context.get('info_dialog_params_store');
}
Run Code Online (Sandbox Code Playgroud)
哪个返回
TypeError: Cannot read property 'get' of undefined
at info (/user_code/index.js:207:36)
at WebhookClient.handleRequest (/user_code/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:382:9)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)
at /var/tmp/worker/worker.js:762:7 …Run Code Online (Sandbox Code Playgroud) google-cloud-platform dialogflow-es dialogflow-es-fulfillment
我无法找到解决此问题的方法.我有一个app.less只包含@import语句的文件较少.现在我想生成一个包含所有导入的较少文件的较少文件,因为我想将它发送到客户端以在那里编译它(是的,我有理由这样做).
因此,不应该在grunt构建步骤中编译较少的文件,而是仅连接,以便客户端不必加载少量文件.我觉得这是一个用户,在客户端编译时应该为其他人出现,但我找不到一个解决方案.我不关心连接是否发生grunt-contrib-less或任何其他工具.