我使用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
我可以在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)
它有效,但它不是很优雅.有没有更好的办法 ?
假设我有数组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
?
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 …
我试图用Big-O表示法来理解数据库索引的性能.我不知道太多,我猜:
这一般是正确的吗?查询主键会不会比O(1)表现更差?我特别关注SQLite,但我有兴趣了解不同数据库之间的差异程度.
我使用过Visual Studio Professional 2008,最近一直在测试免费的C#Express 2010版本.总的来说,我很惊讶它是免费的,它有多少完整的VS功能.我正在考虑将它用于商业计划,而且我知道许可证允许这样做,只是对"非专业开发人员,如业余爱好者,学生和新手开发者"的描述让我有点担心.
我有兴趣知道的是什么阻止它"专业",即:
我搜索了类似的问题,并找到了完整VS和快递版本之间的差异列表,但我更感兴趣的是了解人们的个人经历.似乎VS目标开发人员在大型团队中工作的许多额外功能,所以我主要感兴趣的是从单独或小团队开发人员那里听到,似乎没有令人信服的升级理由.
我个人遇到的限制是:
但到目前为止,这些优势似乎超过了这些缺点.你找到的东西对你来说是一个交易破坏者吗?
更新:几个月后再回到这一点,在发布使用Express版本构建的产品之后,确实可以使用Express版本进行专业编程.程序本身的局限性很小,可以解决,但我越来越意识到它真的是"不支持的扩展",这是(唯一的)主要缺点.在VS本身内没有Resharper,CodeRush等,也没有源代码控制,性能分析,数据库浏览器或单元测试等.这更像是一个生产力拖累而不是交易破坏者,但是看到一个看起来很酷的VS扩展只是为了看到"Express版本不支持"的通知,这很烦人.
如果其他人处于相同的情况,我会先评估您使用(或可能计划使用)的扩展程序,看看它们对您有多重要.如果您不使用任何扩展程序,可以使用Express,或者在没有显着降低生产力的情况下可以使用Express,否则请坚持使用专业版.
我有一个庞大而复杂的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多个单词,并且仍然可以立即执行.
在对此进行了大量测试后,我认为我发现的是:
如果我错了或遗漏了什么,请纠正我!
我有一个HTML页面,其中body标签应用了CSS padding-left和padding-right.我希望页面页脚div可以是页面的100%宽度,但不应用正文填充.有这么好/简单的方法吗?
看一下SO上常见的一些正则表达式问题,在我看来,传统的正则表达式语法在很多领域都缺乏人们现在正在寻找它的任务.例如:
通常的答案是不要使用正则表达式,使用正常的条件比较.如果你自己只得到这个数字就好了,但是当你想把这个数字作为一个更长的字符串的一部分来匹配时,那就不那么好了.为什么我们不能编写类似的东西\d{1~31}
,要么修改正则表达式来进行某种形式的计数,还是让正则表达式引擎在内部将它转换成[1-9]|[12]\d|3[01]
?
这导致了一个非常混乱的正则表达式,能够做到这一点会很棒(mytext){Odd}
.
我们都知道这是个坏主意,但如果[^ ]
操作员不仅限于一个角色,那么这个和类似的任务会更容易.能够这样做真好<name>(.*)[^(</name>)]
非常常见,但正确使用正则表达式非常复杂.如果{IsEmail}
可以使用类似的语法,那么每个人都必须重新发明轮子.
我确信还有其他一些也很有用.我不太了解正则表达式的内部结构,知道这些实现有多么容易,或者甚至是否可能.实现某种形式的计数(解决前两个问题)可能意味着它不再是技术上的"正则表达式",但它肯定会有用.
"正则表达式2.0"语法是否可取,技术上可行,是否有人在处理这样的事情?
我希望将两个字符串数组的内容组合成一个新列表,其中两个内容都连接在一起.
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)