小编mik*_*kel的帖子

如何根据AngularJS局部视图动态更改标题?

我使用ng-view包含AngularJS部分视图,我想根据包含的视图更新页面标题和h1标题标记.这些超出了部分视图控制器的范围,因此我无法弄清楚如何将它们绑定到控制器中的数据集.

如果它是ASP.NET MVC你可以使用@ViewBag来做到这一点,但我不知道AngularJS中的等价物.我搜索过共享服务,事件等但仍无法使其正常工作.任何方式来修改我的例子,所以它的工作将非常感激.

我的HTML:

<html data-ng-app="myModule">
<head>
<!-- include js files -->
<title><!-- should changed when ng-view changes --></title>
</head>
<body>
<h1><!-- should changed when ng-view changes --></h1>

<div data-ng-view></div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的JavaScript:

var myModule = angular.module('myModule', []);
myModule.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/test1', {templateUrl: 'test1.html', controller: Test1Ctrl}).
        when('/test2', {templateUrl: 'test2.html', controller: Test2Ctrl}).
        otherwise({redirectTo: '/test1'});
}]);

function Test1Ctrl($scope, $http) { $scope.header = "Test 1"; 
                                  /* ^ how can I put this in title and h1 */ }
function Test2Ctrl($scope, $http) { …
Run Code Online (Sandbox Code Playgroud)

javascript templates partial-views angularjs angular-routing

410
推荐指数
12
解决办法
25万
查看次数

angularjs路由可以有默认参数值吗?

我可以在AngularJS中设置路由参数的默认值吗?有没有办法拥有/products/123/products/处理相同的路线?

我想重构我现有的代码,看起来像:

myModule.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
     when('/products/', {templateUrl: 'products.html', controller: ProductsCtrl}).            
     when('/products/:productId', {templateUrl: 'products.html', controller: ProductsCtrl})
}]);


function ProductsCtrl($scope, $routeParams) {
    $scope.productId = typeof($routeParams.productId) == "undefined" ? 123 : $routeParams.productId;
}
Run Code Online (Sandbox Code Playgroud)

它有效,但它不是很优雅.有没有更好的办法 ?

javascript model-view-controller url-routing angularjs

32
推荐指数
3
解决办法
3万
查看次数

如何在使用Linq的Where子句后选择数组索引?

假设我有数组string[] weekDays = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };,我想找出包含's'的数组元素的索引.我怎么能用Linq做到这一点?

我已经尝试了int[] indexOfDaysContainingS = weekDays.Where(day => day.Contains("s")).Select((day, index) => index).ToArray();,但这0,1,2可能会返回,因为它可能是IEnumberable<string>在Where()子句之后得到过滤的索引.如果我首先放置Select(),那么我所拥有的只是索引,不能按天来过滤.

我需要改变什么来使其工作并返回1,2,3

c# linq arrays

27
推荐指数
2
解决办法
3万
查看次数

为什么私有成员变量可以被类实例更改?

class TestClass
{
    private string _privateString = "hello";
    void ChangeData()
    {
        TestClass otherTestClass = new TestClass();
        otherTestClass._privateString = "world";
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码在C#中编译,并且在PHP中等效,但有人可以解释为什么otherTestClass._privateString可以在这里更改?

我认为类的实例在任何情况下都不应该能够更改私有成员变量,并且尝试访问otherTestClass._privateString会因"保护级别"错误而导致"无法访问".

但事实并非如此,那么为什么在自己的类中实例化一个对象可以让你访问私有成员呢?如果它,这不会破坏封装到一定程度?还是我错过了一些明显的东西?

  • (我不是在问上面的班级设计是不是很好的做法,只是想知道它背后的理论.)

Edit - Thanks for the answers and comments. To clarify, I'm also interested in knowing if being able to do this is regarded as a positive feature, or if it's a necessary tradeoff for better compile-time checking/code clarity/because most other languages do it that way or whatever. It seems to me …

c# oop encapsulation instantiation private-members

27
推荐指数
2
解决办法
2244
查看次数

数据库索引及其Big-O表示法

我试图用Big-O表示法来理解数据库索引的性能.我不知道太多,我猜:

  • 查询主键或唯一索引将为您提供O(1)查找时间.
  • 查询非唯一索引也会给出O(1)时间,尽管可能'1'比唯一索引慢(?)
  • 查询没有索引的列将提供O(N)查找时间(全表扫描).

这一般是正确的吗?查询主键会不会比O(1)表现更差?我特别关注SQLite,但我有兴趣了解不同数据库之间的差异程度.

sql database sqlite indexing big-o

24
推荐指数
3
解决办法
1万
查看次数

Visual Studio Express产品真的只适用于"业余爱好者,学生和新手"吗?

我使用过Visual Studio Professional 2008,最近一直在测试免费的C#Express 2010版本.总的来说,我很惊讶它是免费的,它有多少完整的VS功能.我正在考虑将它用于商业计划,而且我知道许可证允许这样做,只是对"非专业开发人员,如业余爱好者,学生和新手开发者"的描述让我有点担心.

我有兴趣知道的是什么阻止它"专业",即:

  • 您是否评估了快速版本,并发现缺少某些特定的有用功能会阻止您使用它?或者您最初是否使用快速版本,但由于缺少功能而升级到完整的VS?如果是这样,那个功能是什么?

我搜索了类似的问题,并找到了完整VS和快递版本之间的差异列表,但我更感兴趣的是了解人们的个人经历.似乎VS目标开发人员在大型团队中工作的许多额外功能,所以我主要感兴趣的是从单独或小团队开发人员那里听到,似乎没有令人信服的升级理由.

我个人遇到的限制是:

  • 延伸不受支持,虽然我仍然可以使用DotTrace,NUnit和VS集成之外的混淆器,尽管它不太方便.
  • 有限的重构,虽然"重命名"和"提取方法"仍然存在,我认为它们是最有用的.编辑:在Express中没有'Encapsulate Field'曾经令人讨厌,尽管我认为引入自动getter和setter几乎已经取消了.
  • 针对多线程应用程序进行更有限的调试.
  • 编辑:另一个是你不能像在VS中那样在Express中定位"Any CPU/x86/x64"之间轻松切换.这是可能的,但需要手动编辑项目文件才能这样做.

但到目前为止,这些优势似乎超过了这些缺点.你找到的东西对你来说是一个交易破坏者吗?

更新:几个月后再回到这一点,在发布使用Express版本构建的产品之后,确实可以使用Express版本进行专业编程.程序本身的局限性很小,可以解决,但我越来越意识到它真的是"不支持的扩展",这是(唯一的)主要缺点.在VS本身内没有Resharper,CodeRush等,也没有源代码控制,性能分析,数据库浏览器或单元测试等.这更像是一个生产力拖累而不是交易破坏者,但是看到一个看起来很酷的VS扩展只是为了看到"Express版本不支持"的通知,这很烦人.

如果其他人处于相同的情况,我会先评估您使用(或可能计划使用)的扩展程序,看看它们对您有多重要.如果您不使用任何扩展程序,可以使用Express,或者在没有显着降低生产力的情况下可以使用Express,否则请坚持使用专业版.

c# visual-studio-express visual-studio

20
推荐指数
3
解决办法
3929
查看次数

为什么我的正则表达式比编译时编译得慢得多?

我有一个庞大而复杂的C#正则表达式,在解释时运行正常,但有点慢.我试图通过设置加快速度RegexOptions.Compiled,这似乎是第一次约30秒,之后立即.我试图通过首先将正则表达式编译为程序集来否定这一点,所以我的应用程序可以尽可能快.

我的问题是编译延迟发生时,是否在应用程序中编译:

Regex myComplexRegex = new Regex(regexText, RegexOptions.Compiled);
MatchCollection matches = myComplexRegex.Matches(searchText);
foreach (Match match in matches) // <--- when the one-time long delay kicks in
{

} 
Run Code Online (Sandbox Code Playgroud)

或提前使用Regex.CompileToAssembly:

MatchCollection matches = new CompiledAssembly.ComplexRegex().Matches(searchText);
foreach (Match match in matches) // <--- when the one-time long delay kicks in
{

} 
Run Code Online (Sandbox Code Playgroud)

这使得编译程序基本没用,因为我仍然在第一次foreach调用时遇到延迟.我想要的是所有的编译延迟都是在编译时完成的(在Regex.CompileToAssembly调用中),而不是在运行时.我哪里错了?

(我用来编译成程序集的代码类似于 http://www.dijksterhuis.org/regular-expressions-advanced/,如果相关的话).

编辑:

new在调用编译的程序集时我应该使用new CompiledAssembly.ComplexRegex().Matches(searchText);吗?但它没有提供"需要对象引用"错误.

更新2

谢谢你的回答/评论.我正在使用的正则表达式很长但基本上很简单,列出了数千个单词,每个单词用|分隔.我真的看不出这是一个回溯问题.主题字符串可以只有一个字母长,它仍然可以导致编译延迟.对于RegexOptions.Compiled正则表达式,当正则表达式包含5000个单词时,执行将需要10秒以上.为了比较,正则表达式的非编译版本可以使用30,000多个单词,并且仍然可以立即执行.

在对此进行了大量测试后,我认为我发现的是:

  • 当你的正则表达式有很多选择时,不要使用RegexOptions.Compiled - 它的编译速度可能非常慢.
  • .Net会在可能的情况下对正则表达式使用惰性求值,AFAI也可以看到这也扩展(至少在某种程度上)到正则表达式编译.正则表达式只有在必要时才会完全编译,并且似乎无法提前强制编译.
  • 如果可以强制完全编译正则表达式,Regex.CompileToAssembly会更有用,它似乎正在接近无意义.

如果我错了或遗漏了什么,请纠正我!

c# regex performance

19
推荐指数
2
解决办法
9248
查看次数

父标记填充时如何使div 100%宽度?

我有一个HTML页面,其中body标签应用了CSS padding-left和padding-right.我希望页面页脚div可以是页面的100%宽度,但不应用正文填充.有这么好/简单的方法吗?

html css

15
推荐指数
3
解决办法
2万
查看次数

正则表达式的继承者?

看一下SO上常见的一些正则表达式问题,在我看来,传统的正则表达式语法在很多领域都缺乏人们现在正在寻找它的任务.例如:

  • 我想匹配1到31之间的数字,我该怎么做?

通常的答案是不要使用正则表达式,使用正常的条件比较.如果你自己只得到这个数字就好了,但是当你想把这个数字作为一个更长的字符串的一部分来匹配时,那就不那么好了.为什么我们不能编写类似的东西\d{1~31},要么修改正则表达式来进行某种形式的计数,还是让正则表达式引擎在内部将它转换成[1-9]|[12]\d|3[01]

  • 如何匹配特定字符串的偶数/奇数次出现?

这导致了一个非常混乱的正则表达式,能够做到这一点会很棒(mytext){Odd}.

  • 如何使用正则表达式解析XML?

我们都知道这是个坏主意,但如果[^ ]操作员不仅限于一个角色,那么这个和类似的任务会更容易.能够这样做真好<name>(.*)[^(</name>)]

  • 如何使用正则表达式验证电子邮件?

非常常见,但正确使用正则表达式非常复杂.如果{IsEmail}可以使用类似的语法,那么每个人都必须重新发明轮子.


我确信还有其他一些也很有用.我不太了解正则表达式的内部结构,知道这些实现有多么容易,或者甚至是否可能.实现某种形式的计数(解决前两个问题)可能意味着它不再是技术上的"正则表达式",但它肯定会有用.

"正则表达式2.0"语法是否可取,技术上可行,是否有人在处理这样的事情?

regex

14
推荐指数
4
解决办法
1554
查看次数

将字符串数组合在一起

我希望将两个字符串数组的内容组合成一个新列表,其中两个内容都连接在一起.

string[] days = { "Mon", "Tue", "Wed" };
string[] months = { "Jan", "Feb", "Mar" };

// I want the output to be a list with the contents
// "Mon Jan", "Mon Feb", "Mon Mar", "Tue Jan", "Tue Feb" etc...
Run Code Online (Sandbox Code Playgroud)

我该怎么做 ?当它只有两个数组时,以下工作并且很容易:

List<string> CombineWords(string[] wordsOne, string[] wordsTwo)
{
    var combinedWords = new List<string>();
    foreach (var wordOne in wordsOne)
    {
        foreach (string wordTwo in wordsTwo)
        {
            combinedWords.Add(wordOne + " " + wordTwo);
        }
    }
    return combinedWords;
}
Run Code Online (Sandbox Code Playgroud)

但我希望能够传递不同数量的数组(即使用下面的签名方法)并使其仍然有效.

List<string> CombineWords(params …
Run Code Online (Sandbox Code Playgroud)

.net c# linq arrays

13
推荐指数
2
解决办法
3666
查看次数