我有一个Web应用程序,我需要从中打开一个新的浏览器窗口并将角度应用程序加载到其中。我没有看到以下任何问题:
var windowObjectReference = window.open(strUrl, strWindowName, [strWindowFeatures]);
在获得对新窗口的引用后,我可以调用它的函数并向其发送数据。发送数据是关键功能。我有点模糊但是Angular应用程序将如何获取此数据。我可以使用windowObjectReference调用$ rootScope函数吗? 有什么想法吗?
由于
答案 0 :(得分:0)
我会使用您用于Web应用程序的任何后端api来传递数据。这样,您的角度应用程序应设置为使用内置的http库来加载来自那里的数据。这样你就有了更多的角度结构,可以帮助你一路走来。角度应用程序中的代码示例如下所示:
var onGetResponse = function(data) {
$scope.appData = data;
}
var onGetError = function(reason) {
$scope.responseError = "Could not get the app data.";
alert($scope.responseError);
}
$http.get('/appData').success(onGetResponse).error(onGetError);
底部语句实际上调用了你的后端api,当它成功响应时,它将调用top。然后,您的角度应用可以使用{{appData}}访问信息。
答案 1 :(得分:0)
窗口可以通过多种方法与窗口进行通信,从同一个域开始,它打开了:
window.postMessage
,您可以发送来自的接收消息
打开了窗户和iFrame。Local storage
可用于窗口之间的通信
来自同一个域,使用在更改密钥内容时触发的int FScale = 64;
int FShift = 6;
GArray<uint32> Glyphs;
for (OsChar *s = Str; *s; s++)
{
FT_UInt index = FT_Get_Char_Index(Fnt, *s);
if (index)
Glyphs.Add(index);
}
// Measure the string...
GdcPt2 Sz;
int FontHt = Font->GetHeight();
int AscentF = (int) (Font->Ascent() * FScale);
int LoadMode = FT_LOAD_FORCE_AUTOHINT;
for (unsigned i=0; i<Glyphs.Length(); i++)
{
error = FT_Load_Glyph(Fnt, Glyphs[i], LoadMode);
if (error == 0)
{
int PyF = AscentF - Fnt->glyph->metrics.horiBearingY;
Sz.x += Fnt->glyph->metrics.horiAdvance;
Sz.y = max(Sz.y, PyF + Fnt->glyph->metrics.height);
}
}
// Create the memory context to draw into
x = ((Sz.x + FScale - 1) >> FShift) + 1;
y = FontHt;
if (Img.Reset(new GMemDC(x, y, CsIndex8)))
{
// Clear the context to black
Img->Colour(0);
Img->Rectangle();
int CurX = 0;
int FBaseline = Fnt->size->metrics.ascender;
for (unsigned i=0; i<Glyphs.Length(); i++)
{
error = FT_Load_Glyph(Fnt, Glyphs[i], LoadMode);
if (error == 0)
{
error = FT_Render_Glyph(Fnt->glyph, FT_RENDER_MODE_NORMAL);
if (error == 0)
{
FT_Bitmap &bmp = Fnt->glyph->bitmap;
if (bmp.buffer)
{
int Px = (CurX + (FScale >> 1)) >> FShift;
int PyF = AscentF - Fnt->glyph->metrics.horiBearingY;
int Py = PyF >> FShift;
// copy bitmap into my image buffer at 'Px' x pos
}
if (i < Glyphs.Length() - 1)
{
FT_Vector kerning;
FT_Get_Kerning(Fnt, Glyphs[i], Glyphs[i+1], FT_KERNING_DEFAULT, &kerning);
CurX += Fnt->glyph->metrics.horiAdvance + kerning.x;
}
else
{
CurX += Fnt->glyph->metrics.horiAdvance;
}
}
}
}
}
事件。window.opener
。打开的窗口可以
引用它的父母并请求它所需的信息。该
父母只需要在窗口上存储一个需要的对象
方法。您可以在打开的窗口和开启器上将大多数此方法封装在服务中。顺便说一句 - 不要忘记使用任何这种方法的$ apply。