我在Angular中编写了一个Web应用程序的一部分.为了确保覆盖所有路由,我想添加一个redirectTo
属性$routeProvider
,以便将无效路由返回到Web应用程序的根目录,而不使用Angular.
我试过了:
$routeProvider.otherwise({
redirectTo: '/'
});
Run Code Online (Sandbox Code Playgroud)
但显然这只是在URL的Angular控制部分中的路由,因此用户将被重定向到一个URL http://app.com/angular-part-of-web-app#
,而不是http://app.com
我希望他们去的地方.
我通过将一个空白的部分用作'404'页面,然后是一个只使用该$window
对象重定向到所需页面的控制器来解决这个问题:
routes.js
// Redirect to site list.
$routeProvider.when('/404', {
templateUrl: '/partials/404.html',
controller: 'RedirectCtrl'
});
// Redirect to the 404 page.
$routeProvider.otherwise({
redirectTo: '/404'
});
Run Code Online (Sandbox Code Playgroud)
controllers.js
// Controller to redirect users to root page of site.
.controller('RedirectCtrl', ['$scope', '$window', function ($scope, $window) {
$window.location.href = '/';
}]);
Run Code Online (Sandbox Code Playgroud)
然而,这是掀起'太hacky,必须是更好的方式'的警钟.在Angular有更好的方法吗?
编辑:Angular路线 - 重定向到外部网站?没有回答同一个问题.我将打开我的问题,而不是将其标记为重复(现在),因为Angular世界移动如此之快,之前的答案可能不再是这样.
在浏览器控制台中,输入1===1
计算结果true
.输入1===1===1
评估为false
.
我认为这是因为评估语句的方式:
1 === 1 === 1
变
(1 === 1) === 1
评估为
true === 1
是的false
.
它是否正确?如果没有,这种行为的真正原因是什么?
我是RequireJS的新手,也许这是一个已经讨论过的问题,但我找不到明确的答案或意见.
我有一个使用RequireJS的应用程序.由于需要,它有许多JavaScript文件由Require加载.按预期工作.
期待Fiddler检查员我可以看到应用程序启动时加载了所有文件.我相信Require已经对JavaScript文件的所有引用进行了深入遍历,并在开始时加载它们.
如果这是它的工作方式,我相信生成单个文件,缩小它并使用<script>
html标记加载它会更好.
如果我使用所有脚本生成一个单独的文件,并预先加载它们,那么<script>
RequireJS会再次加载它们吗?
难道我做错了什么?
在生产环境中,什么是更好的解决方案?
提前致谢.
我创建了一个检查用户登录状态的服务(如果令牌存在则记录用户,否则重定向到登录页面).
最初我通过routeProvider解析调用了这个服务 - 这个工作完美一次,但由于Angularjs服务是单例,因此连续调用不会运行测试.
然后我尝试将测试移动到返回对象中的方法中,但是我似乎无法让routeProvider解析为调用服务的特定方法(这在某种程度上是有意义的).
问题是,如何确保每次加载路线时都执行我的测试?
在egghead视频系列(http://www.egghead.io/video/rbqRJQZBF3Q)中,他使用分配给控制器的功能,但这似乎不是生产应用程序的正确解决方案(我不想分配)一个特定控制器的函数,我相信Angularjs依赖注入将不起作用).
我有一个控制器,它连接到一个URL来检索一个csv文件.
我能够使用以下代码在响应中发送文件,这很好.
def fileURL = "www.mysite.com/input.csv"
def thisUrl = new URL(fileURL);
def connection = thisUrl.openConnection();
def output = connection.content.text;
response.setHeader "Content-disposition", "attachment;
filename=${'output.csv'}"
response.contentType = 'text/csv'
response.outputStream << output
response.outputStream.flush()
Run Code Online (Sandbox Code Playgroud)
但是我认为这个方法不适合大文件,因为整个文件被加载到控制器内存中.
我希望能够通过块读取文件块,并通过块将文件写入响应块.
有任何想法吗?
用C#编写的一个相当大的Web应用程序不断抛出2个错误:
'ExecuteReader需要一个开放且可用的连接.连接的当前状态是打开的.并且'读取器关闭时无效尝试调用读取.'
这些错误是偶然的 - 用于在95%的时间内加载精细的页面,但最近它们变得流行,它们一直在发生并且基本上削弱了应用程序的功能.
Web应用程序高度依赖于MS SQL数据库,并且错误似乎不仅限于一个页面,而是几乎所有连接到数据库的页面.
查询按如下方式执行:
Database.Open(); // Custom class that has our connection string hard coded.
string query = "SELECT * FROM table"; // (dummy query)
SqlCommand command = new SqlCommand(query, Database.Conn);
SqlDataReader reader = null;
try {
reader = command.ExecuteReader(CommandBehaviour.CloseConnection);
if (reader.HasRows) {
while (reader.Read()) {
// Do something with the data.
}
}
reader.Close();
}
catch (Exception e) {
throw new Exception(e.Message);
}
finally {
if (reader != null) {
reader.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
我在网上研究过这些错误,并且我已经看到了一些我试过无用的潜在解决方案:
将代码的各个部分放在using()块中.为阅读器指定CommandBehaviour.CloseConnection.检查MARS是否已启用.确保每次都创建新的连接对象. …
我需要检查字符串是否包含任何脏话.
根据另一个问题的一些建议,我创建了一个包含以下单词的HashSet:
HashSet<string> swearWords = new HashSet<string>() { "word_one", "word_two", "etc" };
Run Code Online (Sandbox Code Playgroud)
现在我需要查看swearWords
我的字符串中是否包含任何值.
我已经看到它反过来了,例如:
swearWords.Contains(myString)
Run Code Online (Sandbox Code Playgroud)
但这将失败.
查看HashSet中是否有任何单词的最快方法是myString
什么?
注意:我想我可以使用foreach循环依次检查每个单词,如果找到匹配则中断,我只是想知道是否有更快的方法.
我有一个元素作为加载指标.这是一直存在我的网页上,并显示/通过添加/移除它改变其不透明度和z-index的一类隐.该元素包含使用CSS动画的图像.
我担心这会对页面效率低下,因为当加载器不在屏幕上时动画可能仍然无形地发生.
我试过的
我这样做是为了动画只在元素有visible
类时才起作用,但是这会导致一个刺耳的效果,因为一旦删除了类,动画就会停止,然后加载器才会有淡入淡出的变化.添加transition
到动画似乎没有任何影响.
我为网络论坛继承了一些相当复杂的代码,我试图实现的功能之一是空间不能被截断为只有一个.这主要是因为我们的用户经常希望在帖子中包含ASCII艺术,表格等.
我首先使用简单的搜索并在javascript中替换,这具有破坏HTML标记的副作用(例如,<a href=....>
成为<a href=.....>
).
然后我尝试在服务器端执行此操作,当检索字符串时,通过在链接和代码人插入之前转换空格转换为HTML.这在一定程度上起作用,但它会导致代码的其他部分出现一些问题,例如,如果消息被截断以显示在主页上,则可能会留下一些空格代码,例如
这是一条消息&nb
我认为可能有一种方法可以改变原始的javascript来实现这一点 - 它只需要匹配不在HTML标记内的空格.
我最初使用的脚本是message = message.replace(/\s/g, " ")
.
感谢您提供的任何帮助.