我有一个平均堆栈网站。我想用执行函数 https://stackoverflow.com/a/45428344/702977绑定一个按钮以在对话框中启动该网站:
function doSomethingAndShowDialog(event) {
clickEvent = event;
Office.context.ui.displayDialogAsync("https://localhost:3000/try", {}, function () {})
}
单击该按钮将打开一个包含以下 url 的对话框,它确实显示了页面的内容:
https://localhost:3000/try?_host_Info=excel|web|16.00|en-us|7fe9b4e9-d51e-bea5-d194-c817bc5ed4bc|isDialog#%2Ftry%3F_host_Info=excel%7Cweb%7C16.00%7Cen-us%7C7fe9b4e9-d51e-bea5-d194-c817bc5ed4bc%7CisDialog
但是,在控制台中,有错误:$rootScope:infdig
无限 $digest 循环 https://docs.angularjs.org/error/%24rootScope/infdig at angular.bootstrap(document, ['myapp'])
:
var wait = setTimeout(myFunction, 1000);
Office.initialize = function (reason) {
$(document).ready(function () {
angular.bootstrap(document, ['myapp'])
console.log("bootstrapped inside Office.initialize");
clearTimeout(wait);
})
}
function myFunction () {
$(document).ready(function () {
angular.bootstrap(document, ['myapp'])
console.log("bootstrapped outside Office.initialize");
})
}
app = angular.module("myapp", []);
app.config(...);
app.controller(...);
如果我们只是打开https://localhost:3000/try
在浏览器中,没有错误。
有谁知道为什么那个长网址不起作用angular.bootstrap
?我们该如何解决这个问题?
Edit 1:控制台的屏幕截图https://localhost:3000/try?_host_Info=excel...
。请注意,两者都不是bootstrapped inside Office.initialize
nor bootstrapped outside Office.initialize
被展示。但如果我跑https://localhost:3000/try
在浏览器中,我只会看到bootstrapped outside Office.initialize
,当我从 Excel 客户端调用它时,我只会看到bootstrapped inside Office.initialize
.