假设我从一个笔尖加载了一个视图控制器,并决定对场景后面的一个子视图做一些事情.在稍后的时刻,我会显示这个视图控制器的视图.
viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[viewController.someSubview doSomething];
//later on
[mainView addSubview:viewController.view];
Run Code Online (Sandbox Code Playgroud)
问题是,在视图出现之前似乎没有加载someSubview对象,因此不调用doSomething方法.到目前为止,我的解决方法是致电:
[mainView addSubview:viewController.view];
[viewController.view removeFromSuperview];
Run Code Online (Sandbox Code Playgroud)
首先初始化viewcontroller的子视图.有没有更优雅的方式(如loadSubviews方法或其他东西)为此任务?
所以我正在尝试动态加载脚本并找出加载该脚本的URL路径.如果脚本是静态加载的(如何获取当前正在执行的javascript代码的文件路径),有些人给了我一个非常棒的解决方案来解决这个问题.但我需要一个动态加载的解决方案.例如:
$(function()
{ $.getScript("brilliant.js", function(data, textStatus)
{ // do nothing
});
});
Run Code Online (Sandbox Code Playgroud)
"brilliant.js"在哪里:
var scripts = document.getElementsByTagName("script");
var src = scripts[scripts.length-1].src;
alert("THIS IS: "+src);
Run Code Online (Sandbox Code Playgroud)
理想情况下,这应该打印出"brilliant.js"或"⟨hostname+basepath⟩/ brilliant.js"
目前,brilliant.js适用于静态包含的脚本,但不适用于动态包含的脚本(如$ .getScript).有人有主意吗?dom中是否存储了所有已加载的脚本?
编辑:Andras提供了一个非常好的解决方案,虽然它可能只适用于jQuery.因为这可能是最受欢迎的图书馆,而且我肯定会使用它.它也可以扩展到其他库.这是我的简化版本:
var scriptUri;
curScriptUrl(function(x)
{ scriptUri = x;
alert(scriptUri);
});
function curScriptUrl(callback)
{ var scripts = document.getElementsByTagName("script");
var scriptURI = scripts[scripts.length-1].src;
if(scriptURI != "") // static include
{ callback(scriptURI);
}else if($ != undefined) // jQuery ajax
{ $(document).ajaxSuccess(function(e, xhr, s)
{ callback(s.url);
});
}
}
Run Code Online (Sandbox Code Playgroud) 我的webapp有一个非常不愉快的问题.
该应用程序的设计如下:
- 根应用程序正在加载Flex SWF,后者又在子应用程序(MagickECB)中加载第三方Flex SWF模块.
- 两个应用程序都引用了Albums.dll,在/ bin和/ MagickECB/bin中找到的dll ,两个应用程序在IIS中共享相同的应用程序池.
编辑:这是两个项目,根应用程序项目和子应用程序项目.Subapp项目参考根应用程序项目.
从根应用程序的flex应用程序加载子应用程序的flex模块时,我们会随机获得一个强制转换错误,如下所示:
获取Photobook的配置时出错:[A] Albums.LocalizationConfiguration无法转换为[B] Albums.LocalizationConfiguration.类型A源自'Albums,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'在上下文' Default '位置' C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\magickecb\4414db97\126f5aaf\assembly\dl3\cf281292\4a6ecec8_8a7bcb01\Albums.DLL '.类型B源自位于' C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files的上下文' LoadFrom '中的'Albums,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null' \ magickecb\4414db97\126f5aaf \组件\ DL3\017fab88\a91238d1_7977cb01 \相册.".在Albums.CGlobal.GetUserLocale(String userHandle)中的Albums.LocalizationConfiguration.GetConfig()
试图调查这个问题,我发现了GetConfig方法导致返回的强制转换错误
return (LocalizationConfiguration)ConfigurationManager.GetSection("Localization/Localization");
Run Code Online (Sandbox Code Playgroud)
Web.config中的部分声明如下:(编辑:根应用程序的web.config)
<sectionGroup name="Localization">
<section name="Localization" type="Albums.LocalizationConfigurationHandler, Albums"/>
</sectionGroup>
Run Code Online (Sandbox Code Playgroud)
我的猜测是GetSection的内部代码试图在"LoadFrom"上下文中加载Albums.dll,因此导致与/ bin路径中加载的原始Albums.dll发生冲突(请参阅上下文问题)
我还注意到/ MagickECB/Bin中的其他dll也引用了Albums.dll,所以我重建所有项目,以便每个DLL引用相同版本的Albums.dll
最后,如果您检查临时文件中的dll完整路径,则扩展名是不同的(大写与小写).
关于如何解决这个问题的任何意见将不胜感激!!
我的教授给我发了一个.rdata文件,希望我对内容做一些分析.虽然我对R很体面,但我从未在.rdata文件中保存我的工作,因此从未使用过它们.
当我尝试加载文件时,它看起来像是在工作:
> load('/home/swansone/Desktop/anes.rdata')
> ls()
[1] "25383-0001-Data"
Run Code Online (Sandbox Code Playgroud)
但我似乎无法得到数据:
> names("25383-0001-Data")
NULL
Run Code Online (Sandbox Code Playgroud)
我知道.rdata文件中有数据(它是13 MB,肯定有很多)我做错了吗?我不知所措.
编辑:
我应该注意,我也尝试过不使用引号:
> names(25383-0001-Data)
Error: object "Data" not found
Run Code Online (Sandbox Code Playgroud)
并重命名:
> ls()[1] <- 'nes'
Error in ls()[1] <- "nes" : invalid (NULL) left side of assignment
Run Code Online (Sandbox Code Playgroud) 我计划最初在EC2微型实例上运行我的网站,但我想知道我是否可以测试它可以处理多少用户?
我想知道Python模块是如何工作的?假设我想让我的Python程序使用一些自定义模块与它打包,我将它们放在主.py文件中?(如果不使用常规方法,我将如何加载它们?)
在我的"更新"页面中,我经常需要在页面加载和单击某个复选框上调用相同的jQuery函数,大多数情况如下:
function foo(){
if ($('#mycheckbox').is(':checked')){
$('.myclass').hide();
} else {
$('.myclass').show();
}
}
$(function() {
foo(); // this is launched on load
$('#mycheckbox').click(function(){
foo(); // this is launched on checkbox click
})
});
Run Code Online (Sandbox Code Playgroud)
在页面加载时,可以根据数据库值检查或不检查复选框:这就是为什么我需要启动foo(); 负载
嗯,这很好,但我总是想知道......是否有更好或最优雅的解决方案?提前致谢
我想通过以下方式动态导入模块:
我用这种结构创建了一个名为pkg的文件夹:
pkg
|__init__.py
|foo.py
Run Code Online (Sandbox Code Playgroud)
在头部__init__.py,添加此代码fragement:
pkgpath = os.path.dirname(pkg.__file__);
for module in pkgutil.iter_modules([pkgpath]):
__import__(module[1], locals(), globals());
m = sys.modules[module[1]];
print m.__package__;
Run Code Online (Sandbox Code Playgroud)
我发现m.__package__是None万一有在foo.py没有import语句,但如果我添加了一个简单的import语句是这样的:
import os
Run Code Online (Sandbox Code Playgroud)
那么m.__package__是"pkg"这是正确的包名.为什么会这样?
如何导入模块并确保其正确的包属性?
在回答这个问题时,我遇到了一个我不理解的情况.OP正在尝试从以下位置加载XML:http://www.google.com/ig/api?weather = 12414&hl =
明显的解决方案是:
string m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it";
XmlDocument myXmlDocument = new XmlDocument();
myXmlDocument.Load(m_strFilePath); //Load NOT LoadXml
Run Code Online (Sandbox Code Playgroud)
然而,这失败了
XmlException:给定编码中的字符无效.第1行,第499位.
这似乎是在窒息à的Umidità.
OTOH,以下工作正常:
var m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it";
string xmlStr;
using(var wc = new WebClient())
{
xmlStr = wc.DownloadString(m_strFilePath);
}
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlStr);
Run Code Online (Sandbox Code Playgroud)
我为此感到困惑.任何人都可以解释为什么前者失败,但后者工作正常吗?
值得注意的是,文档的xml声明省略了编码.
我认为这个问题以前没有提出过,至少不是我需要回答的问题.我正在使用jQuery的.load函数.加载页面片段时遇到问题.
使用类似的东西时:
$('#content').load('loadTest.html');
Run Code Online (Sandbox Code Playgroud)
loadTest.html上的所有脚本加载都很好.但是,在加载页面片段时,如下所示:
$('#content').load('loadTest.html #content');
Run Code Online (Sandbox Code Playgroud)
在更新DOM之前删除脚本
这在http://api.jquery.com/load/中有明确记载,其中说:
注意: 使用不带后缀选择器表达式的URL调用.load()时,会在删除脚本之前将内容传递给.html().这将在丢弃之前执行脚本块.但是,如果使用附加到URL的选择器表达式调用.load(),则在更新DOM之前会删除脚本,这就是它们永远不会被执行的原因.两种情况的示例如下所示:
我知道我可以在外部加载可以在任何地方使用的脚本,但问题是,我正在使用页面范围的ajax系统,其中所有内容都是动态加载的.所以我真的不喜欢在外部文件中使用我将要编写的每个javascript函数(此时为100).特别是因为其中一些javascript函数是从数据库加载的值中创建的,我无法在.js文件中考虑这些值.
在更新DOM之前,是否有任何解决方法可以删除脚本?我能以某种方式手动加载它们吗?任何微小的例子对我都有帮助.