有没有办法在Visual Studio中调试TypeScript源代码(而不是调试生成的javascript)?
从TypeScript语言规范:
TypeScript可选择提供源映射,从而启用源级调试.
因此,我希望能够在ts代码中放置断点并能够调试它,但它不起作用.我没有在规格中找到任何其他调试提及.我有什么办法让这项工作成功吗?也许"可选"这个词暗示我需要为它起作用......有什么建议吗?
我清楚地记得从早期的.NET开始,在StringBuilder上调用ToString用于提供新的字符串对象(要返回)与StringBuilder使用的内部char缓冲区.这样,如果使用StringBuilder构造了一个巨大的字符串,则调用ToString不必复制它.
在这样做时,StringBuilder必须阻止对缓冲区的任何其他更改,因为它现在由不可变字符串使用.因此,StringBuilder将切换到"复制更改",其中任何尝试的更改将首先创建新缓冲区,将旧缓冲区的内容复制到它,然后才更改它.
我认为假设StringBuilder将用于构造一个字符串,然后转换为常规字符串并丢弃.对我来说似乎是一个合理的假设.
现在就是这个.我在文档中找不到任何提及.但我不确定它是否有记录.
所以我使用Reflector(.NET 4.0)查看了ToString的实现,在我看来它实际上是复制字符串,而不是仅仅共享缓冲区:
[SecuritySafeCritical]
public override unsafe string ToString()
{
string str = string.FastAllocateString(this.Length);
StringBuilder chunkPrevious = this;
fixed (char* str2 = ((char*) str))
{
char* chPtr = str2;
do
{
if (chunkPrevious.m_ChunkLength > 0)
{
char[] chunkChars = chunkPrevious.m_ChunkChars;
int chunkOffset = chunkPrevious.m_ChunkOffset;
int chunkLength = chunkPrevious.m_ChunkLength;
if ((((ulong) (chunkLength + chunkOffset)) > str.Length) || (chunkLength > chunkChars.Length))
{
throw new ArgumentOutOfRangeException("chunkLength", Environment.GetResourceString("ArgumentOutOfRange_Index"));
}
fixed (char* chRef = chunkChars)
{
string.wstrcpy(chPtr + chunkOffset, chRef, chunkLength);
} …Run Code Online (Sandbox Code Playgroud) 在Silverlight应用程序中,我们可以在App.xaml中定义资源,并可以从任何XAML文档访问它们,而无需显式合并这些资源.
是否有类库的等效解决方案?我在类库中创建了一个单独的资源字典,但在使用之前我必须按如下方式合并它.
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
有办法避免这种情况吗?在每个XAML文档中对全局使用的资源执行此操作相当繁琐.
当您在Javascript中调用顶级函数时,函数内的this关键字引用默认对象(如果在浏览器中则为窗口).我的理解是,这是一个调用函数作为方法的特殊情况,因为默认情况下它是在窗口上调用的(如John Resig的书中所述,JavaScript忍者的秘密,第49页).实际上,以下代码中的两个调用都是相同的.
function func() {
return this;
}
// invoke as a top-level function
console.log(func() === window); // true
// invoke as a method of window
console.log(window.func() === window); // true
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都很好......现在这是我不理解的部分:
当函数嵌套在另一个函数中并在未指定要调用的对象的情况下调用时,函数内的this关键字也指向window.但是不能在窗口上调用内部函数(参见下面的代码).
function outerFunc() {
function innerFunc() {
return this;
}
// invoke without window.* - OK
console.log(innerFunc() === window); // true
// invoke on window
//window.innerFunc(); - error (window has no such method)
console.log(window.innerFunc) // undefined
}
outerFunc();
Run Code Online (Sandbox Code Playgroud)
完全合理的是嵌套函数在窗口上不可用,因为它是在所有嵌套之后......但是我不明白为什么this关键字引用窗口,就好像在窗口上调用了函数一样.我在这里错过了什么?
编辑
以下是对以下优秀答案的总结以及我的一些后续研究.
调用函数"正常"与调用它作为窗口方法相同是不正确的.只有在全局定义函数时,这才是正确的. …
我有一个特定的UI元素,点击它时应该导航到另一个URL.我尝试处理鼠标按下事件并执行如下操作:System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("http://google.com"),"_ blank");
但是,除非我禁用弹出窗口拦截器,否则浏览器会阻止它(我尝试使用Chrome和Firefox).我做了一些研究,似乎浏览器阻止了由于用户交互而不会发生的导航,并且就浏览器而言,这个导航是由插件(Silverlight)而不是用户发起的.
好的,有道理.但后来我尝试使用HyperlinkButton而不是阻止它.
我想知道为什么这两种方法从浏览器中得到不同的处理.任何的想法?
我实际上通过使用HyperLinkButton包装导航触发UI来解决这个问题,但我仍然非常好奇......
我有一个 angular 应用程序,它包含多个逻辑视图(具有匹配的路由)。每个视图显示多个选项卡。根据活动选项卡,我确定要显示/隐藏 UI 的哪些部分。
由于选项卡不是路线的一部分,因此加载视图始终显示第一个选项卡。这在大多数情况下很好,但是当用户导航到另一个视图然后导航回(使用浏览器后退按钮)时,恢复以前选择的选项卡是有意义的。
任何想法如何在不向路线添加活动标签索引的情况下实现这一目标?
顺便说一句,我想避免将活动选项卡添加到路由的原因是:
我不希望将选项卡选择历史记录添加到浏览历史记录中(单击返回不应将您带到同一视图上的上一个选项卡,而是转到上一个视图)
我不希望控制器重新加载
到目前为止,我考虑使用本地存储来存储视图中的最后一个活动选项卡,并在检测到浏览器导航回来时恢复它。但这感觉就像一个黑客,所以我试图避免它。我正在寻找一种通过 angular 的做事方式感觉“正确”的解决方案......
任何想法表示赞赏!
假设元素的高度设置为“auto”。尝试在 jQuery 中获取高度会返回计算出的高度。有没有办法获取实际的 CSS 值(自动)而不是像素高度?
$('#myDiv').height() // returns calculated height
Run Code Online (Sandbox Code Playgroud)
我有一个经典的案例,其中我的一个应用程序可以向其他应用程序提供内容。我知道可以使用具有签名保护级别的权限来保护内容提供者。但是我担心另一个方向。如果未安装包含内容提供程序的应用程序,而恶意应用程序包含具有相同权限的提供程序(我知道该权限不应偶然冲突,但我正在考虑恶意应用程序),该怎么办。我如何确保我的应用仅在提供者具有相同签名的应用中定义时才查询提供者?
我能想到的最接近的方法是通过程序包管理器找到其他应用程序,并验证签名是否匹配。并且由于我的其他应用程序具有内容提供程序,因此不能将具有相同权限的其他内容提供程序安装在同一设备上。但是与此同时,我正在包名称和授权之间建立联系。我希望有一种更清洁的方法。
我刚刚开始使用Android开发,我正在按照Google的教程进行操作.我有操作栏的问题,其中getActionBar方法返回null,尽管根据教程它不应该.我回顾了类似的StackOverflow问题,但没有一个提议的解决方案有效.
这是我的onCreate代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml中:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myfirstapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑:添加styles.xml(它是默认的,由Eclipse创建)
<resources>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer …Run Code Online (Sandbox Code Playgroud) android ×2
silverlight ×2
.net ×1
angularjs ×1
css ×1
html ×1
immutability ×1
javascript ×1
jquery ×1
navigation ×1
resources ×1
tostring ×1
typescript ×1