AngularJS可以做的一件有趣的事情是将过滤器应用于特定的数据绑定表达式,这是一种应用的便捷方式,例如,特定于文化的货币或模型属性的日期格式.在范围上计算属性也很好.问题是这些功能都不适用于双向数据绑定方案 - 只是从范围到视图的单向数据绑定.这在一个优秀的图书馆中似乎是一个明显的遗漏 - 或者我错过了什么?
在KnockoutJS中,我可以创建一个读/写计算属性,它允许我指定一对函数,一个被调用以获取属性的值,另一个在设置属性时被调用.这允许我实现,例如,文化感知输入 - 让用户键入"$ 1.24"并将其解析为ViewModel中的浮点数,并在输入中反映ViewModel中的更改.
我能找到的最接近的东西是使用$scope.$watch(propertyName, functionOrNGExpression);这个允许我在$scope更改属性时调用一个函数.但这并不能解决例如文化意识的输入问题.当我尝试$watched在$watch方法本身中修改属性时,请注意问题:
$scope.$watch("property", function (newValue, oldValue) {
$scope.outputMessage = "oldValue: " + oldValue + " newValue: " + newValue;
$scope.property = Globalize.parseFloat(newValue);
});
Run Code Online (Sandbox Code Playgroud)
(http://jsfiddle.net/gyZH8/2/)
当用户开始输入时,输入元素变得非常混乱.我通过将属性拆分为两个属性来改进它,一个用于未解析的值,另一个用于解析的值:
$scope.visibleProperty= 0.0;
$scope.hiddenProperty = 0.0;
$scope.$watch("visibleProperty", function (newValue, oldValue) {
$scope.outputMessage = "oldValue: " + oldValue + " newValue: " + newValue;
$scope.hiddenProperty = Globalize.parseFloat(newValue);
});
Run Code Online (Sandbox Code Playgroud)
(http://jsfiddle.net/XkPNv/1/)
这是对第一个版本的改进,但是有点冗长,并注意到parsedValue范围更改的属性仍然存在问题(在第二个输入中键入内容,parsedValue直接更改.注意顶部输入不更新).这可能发生在控制器操作或从数据服务加载数据. …
我在C#中使用lambda表达式之前已经习惯使用lambda表达式,因此我养成了使用_简单lambda 的习惯,Func<T, TResult>,特别是对于简单的lambda,其中body只是表示返回值的表达式(谓词等) ..).但是,在C#中,我经常看到使用单个字母而不是_用于这些相同类型的lambda表达式,例如x,y,z,i,j,k.字母方法对我来说似乎很奇怪,因为这些字母在循环变量中已经具有常用的另一种典型含义._在我看来,通常更容易阅读.单字母风格真的是C#中lambdas的既定风格吗?
例子:
我以前写的东西:
var ages = people.Select(_ => _.Age);
Run Code Online (Sandbox Code Playgroud)
我所看到的是写作:
var ages = people.Select(x => x.Age); // choice of 'x' is not consistent
Run Code Online (Sandbox Code Playgroud) 我正在用本机C++(而不是C++/CLR)编写代码.我知道在片段管理器和片段选择器接口方面没有内置的C++支持,但是我发现了一个名为"snippy"的实用程序,它可以生成C++片段.这是程序生成的c ++代码段:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>MySnippet</Title>
<Shortcut>MySnippet</Shortcut>
<Description>Just a test snippet</Description>
<Author>Me</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal Editable="true">
<ID>literal1</ID>
<ToolTip>just a placeholder</ToolTip>
<Default>
</Default>
<Function>
</Function>
</Literal>
</Declarations>
<Code Language="cpp"><![CDATA[cout << "$literal1$" << std::endl;]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Run Code Online (Sandbox Code Playgroud)
如果在Visual C++中有支持,即使在有限的容量中,对于C++片段,如何将它们添加到我的环境中,以及有哪些限制?我只需要支持基本的扩展片段,我可以通过键入快捷键和点击标签来调用它,并支持我可以选中的基本文字(基本上,如果它支持上面的片段,我很好).如果无法做到这一点,是否有支持C++片段的Visual Studio的免费附加组件或扩展?我正在使用Visual Studio 2010和2008,但我现在主要在2010年编写代码.
我试图在WPF/silverlight数据绑定中使用数据绑定看到一种更清晰的替代方案(对于Scala来说是惯用的) - 即实现INotifyPropertyChanged.首先,一些背景:
在.Net WPF或silverlight应用程序中,您具有双向数据绑定的概念(即,将UI的某些元素的值绑定到DataContext的.net属性,以便更改为UI元素影响属性,反之亦然.实现这一点的一种方法是在DataContext中实现INotifyPropertyChanged接口.不幸的是,这为你添加到"ModelView"类型的任何属性引入了很多样板代码.这是它的外观在斯卡拉:
trait IDrawable extends INotifyPropertyChanged
{
protected var drawOrder : Int = 0
def DrawOrder : Int = drawOrder
def DrawOrder_=(value : Int) {
if(drawOrder != value) {
drawOrder = value
OnPropertyChanged("DrawOrder")
}
}
protected var visible : Boolean = true
def Visible : Boolean = visible
def Visible_=(value: Boolean) = {
if(visible != value) {
visible = value
OnPropertyChanged("Visible")
}
}
def Mutate() : Unit = {
if(Visible) {
DrawOrder += 1 // Should trigger …Run Code Online (Sandbox Code Playgroud) Windows 8 metro下的WinRT是否允许您动态加载和执行代码?例如,是否可以将dll下载到内存或隔离存储并从中运行代码?可以编写JIT编译脚本语言到本地汇编语言(例如第三方浏览器)的代码能够在WinRT中执行相同的操作,还是禁止将其作为"不安全"操作?
对于在WinRT中运行的"托管"代码,这个问题的答案是否有所不同?例如,在托管代码中,您是否可以从Internet下载程序集并使其在MEF中可被发现或以其他方式在运行时加载它?你能用某种形式的Reflection.Emit吗?在C++中,您可以运行应用程序在运行时生成的汇编代码,还是在运行时动态加载DLL(可能是某种形式的WinRT DLL)?
据说你可以创建一个可以在C#中使用的C++ WinRT组件.我有一个简单的测试项目 - 一个C#XAML应用程序,以及一个仅使用基本WinRT组件项目模板的C++项目.当我尝试在C#XAML项目中添加项目引用时,它表示无法添加引用(不确定原因).我可以构建本机WinRT组件,并生成.winmd文件,我可以使用添加引用对话框中的浏览按钮手动添加对此.winmd文件的引用.这允许我访问本机库中的方法,但是当我构建时,它表示它使用的是Platform.IDisposable,但该类型是在未引用的程序集中定义的.我没有看到任何会话演示这种情况.
我想对VS 2013中的ASP.NET的默认单页面应用程序模板进行修改,该模板当前使用了承载令牌身份验证.该示例使用app.UseOAuthBearerTokens创建令牌服务器和中间件,以验证同一应用程序中的请求令牌.
我想做的是保留原样,但添加第二个应用程序(在IIS中绑定到同一个域,不同的路径 - 例如/ auth/*用于身份验证服务器,/ app1/*用于应用程序).对于第二个应用程序,我希望它接受第一个应用程序中的身份验证服务器发出的令牌.怎么可以实现呢?我在Startup.Auth.cs中尝试了以下内容,只是关闭了UseOAuthBearerTokens中的代码,但我得到了对[Authorize]属性的任何请求的401响应:
public partial class Startup
{
static Startup()
{
PublicClientId = "self";
UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>());
OAuthOptions = new OAuthAuthorizationServerOptions
{
//TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
//AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
//AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
AuthenticationType = "ExternalBearer",
AllowInsecureHttp = true,
};
}
public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }
public static Func<UserManager<IdentityUser>> UserManagerFactory { get; set; }
public static string PublicClientId { get; …Run Code Online (Sandbox Code Playgroud) 我距离制作此处描述的方法还有一步之遥: 使用Scala 2.8 Trunk构建目标Android
使用单个项目(与scala的一个项目和android的一个项目).
我遇到了一个问题.使用此输入文件(参数)proguard:
-injars bin;lib/scala-library.jar(!META-INF/MANIFEST.MF,!library.properties)
-outjar lib/scandroid.jar
-libraryjars lib/android.jar
-dontwarn
-dontoptimize
-dontobfuscate
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class org.scala.jeb.** { public protected *; }
-keep public class org.xml.sax.EntityResolver { public protected *; }
Run Code Online (Sandbox Code Playgroud)
Proguard成功构建了scandroid.jar,但它似乎包含了android资源构建器生成和编译的生成的R类.在这种情况下,它们位于bin/org/jeb/R*.class中.这不是我想要的.android dalvik转换器无法构建,因为它认为R类有重复(它在scandroid中,也在R*.class文件中).如何修改上面的proguard参数以从scandroid.jar中排除R*.class文件,以便dalvik转换器满意?编辑:我应该注意到我尝试添加; bin/org/jeb/R.class;等...到-libraryjars参数,这似乎只会导致它抱怨重复的类,另外proguard决定排除我的scala类文件也是.
我正在研究新的ASP.NET MVC4 Web API框架.我在Windows 8消费者预览版上运行Visual Studio 2011测试版.
我的问题是,新的Web API框架的官方示例都没有使用任何类型的数据库后端.在过去,我已经能够创建一个本地SQL CE数据库,并使用Entity Framework作为ORM通过WCF数据服务提供服务.如何使用Web API执行相同的操作?
这也是一个有效的问题吗?如果我想暴露实体框架映射的SQL CE数据库,我应该继续使用WCF数据服务吗?它似乎工作正常,除了不提供选择响应格式化程序的灵活性,我可能会得到web api.
基于逃逸分析的优化是Proguard的计划功能.与此同时,是否有像proguard这样的现有工具已经进行了需要转义分析的优化?