我需要能够动态加载/卸载角度应用程序而不会导致内存泄漏.在jQuery中你可以做到$("#elementHoldingMyWidget").remove();并且正确的破坏代码被执行,事件处理程序是未绑定的等等.
我一直无法在角度文档中找到任何内容,一旦它被引导就可能会删除应用程序.
我的第一次尝试是破坏rootScope,如下所示:
var rootScope = $("body").scope();
rootScope.$destroy();
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用,我不确定注射器和服务如何清理,即使它确实如此.
该怎么做?
我已经看过很多指令性的例子,包括AngularUI团队的那些,他们似乎没有进行任何清理.
这是他们创建jQuery datepicker的ui-date指令的一个例子. (资源)
element.on('blur', function() { ... });
Run Code Online (Sandbox Code Playgroud)
他们在元素上放置了一个事件处理程序,但它们从来没有取消绑定事件.我原以为会有代码存在,例如:
var namespace = ".uiDate";
element.on('blur' + namespace, function() { ... });
element.on("$destroy" + namespace, function ()
{
element.datepicker("destroy"); //Destroy datepicker widget
element.off(namespace); //Unbind events from this namespace
});
Run Code Online (Sandbox Code Playgroud)
所以这让我想知道是否有一些我不理解的东西.在创建和销毁元素w/this指令的情况下,它们不会导致内存泄漏吗?
我错过了什么?
我不想懒加载我的路线模板.相反,我想在执行任何路由之前将所有路由模板加载到$ templateCache中.
这就是我在做的事情:
angular.module('myApp', ['ngRoute']).config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider)
{
$locationProvider.html5Mode(false);
$routeProvider.when("/main", {templateUrl: "main", controller: "MainCtrl"})
.when("/login",{templateUrl: "login", controller: "LoginCtrl"});
}])
.run(['$location','$templateCache', function ($location, $templateCache)
{
//...Save templates in $templateCache
$location.path("/login");
}]);
Run Code Online (Sandbox Code Playgroud)
如果您浏览到/,则此工作正常,因为它与任何路径都不匹配.但是如果你浏览或刷新/#/login它似乎路由服务试图在我的运行块运行之前加载模板并向服务器发出请求.
无论如何要确保填充$ templateCache的代码将在路由服务寻找模板之前执行?
在以前版本的Razor中,我会通过呈现看起来像这样的部分视图来有条件地加载脚本的缩小/调试版本:
@if (Context.IsDebuggingEnabled)
{
<script src="~/debug.js"></script>
}
else
{
<script src="~/release.js"></script>
}
Run Code Online (Sandbox Code Playgroud)
如果MVC6,vNext,VS2015,或任何你称之为:)我不知道如何实现这一目标.谁知道怎么样?
我想要一个可以像这样使用的属性指令:
<div my-dir="{items:m.items, type:'0'}"></div>
Run Code Online (Sandbox Code Playgroud)
在我的指令中,我可以把它变成一个像这样的对象:
function (scope, element, attributes, modelController)
{
var ops = $.extend({}, scope.$eval(attributes.myDir));
}
Run Code Online (Sandbox Code Playgroud)
现在说m.items是一个数组.在某个地方,一个ajax调用用一个新的替换数组.我想留意这个.
如何查看m.items或为属性中的items属性键入的内容?表达式应该是什么?
我有一个名为CampRegistration的表,其结构如下:
[EID] INT, [CampName] VARCHAR(100), [StartDt] DATETIME
Run Code Online (Sandbox Code Playgroud)
EID是参加营地的人的标识符.我希望在给定日期之前选择CampRegistration表中每个人参加的最后一个营地.
这是我的第一次尝试:
@DECLARE @currentCampDt DATETIME = '2012-8-4';
SELECT [EID], [CampName], MAX([StartDt]) [StartDt]
FROM [CampRegistration]
WHERE [StartDt] < @currentCampDt
GROUP BY [EID],[CampName]
order by [EID]
Run Code Online (Sandbox Code Playgroud)
这里的问题是,如果有人参加了多个不同名称的营地,我会得到该人的多个结果(每个营地名称的最后一次参加).我只想为每个人拿回一张单曲,这是他们参加的任何名字的最后一个阵营.我最终需要得到这些三块信息的每个记录(EID,CampName和阵营的StartDt),所以我不知道如果我真的可以从删除CampName Group By.
我正在使用SQL Server 2012,非常感谢有关如何实现此类查询结果的任何建议.
谢谢.
我正在使用SQL Server 2012,并以下列方式创建表:
SELECT x, y
INTO CampRegistration
FROM tableA
UNION
SELECT x, y
FROM tableB
Run Code Online (Sandbox Code Playgroud)
x和y不是主键.我希望该CampRegistration表有一个额外的列,它是一个完整的代理主键,即.类似的东西IDENTITY.
我怎么能这样做,或者通过修改SELECT INTO或者之后添加和填充列?
这是我想用CSS制作的动画.

这是一个动画PNG.Firefox是我所知道的唯一可以显示动画的浏览器.请在FireFox中查看此内容,以便您可以看到动画.我想尝试在CSS中使用它,这样我就可以在更多的浏览器中使用它并仍然获得真正的透明度(GIF动画无法提供)
< - 这是一个点,可以用来制作动画而不必在css中创建点的阴影.
这个小提琴http://jsfiddle.net/jvrvK/显示了我到目前为止所拥有的内容.我看看球体的外观,但动画似乎在Chrome中不起作用,我不太了解CSS动画,足以在PNG中创建相同类型的旋转.
非常感谢您的帮助!
小提琴代码如下:
<ul class="busy">
<li class="busy-dot1"><b class="busy-dot-shine"></b></li>
<li class="busy-dot2"><b class="busy-dot-shine"></b></li>
<li class="busy-dot3"><b class="busy-dot-shine"></b></li>
<li class="busy-dot4"><b class="busy-dot-shine"></b></li>
<li class="busy-dot5"><b class="busy-dot-shine"></b></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
.busy {
list-style: none;
padding: 0;
position: relative;
transform-style: preserve-3d;
animation: rot 4s linear infinite;
width:100px;
}
.busy-dot1, .busy-dot2, .busy-dot3, .busy-dot4, .busy-dot5 {
border-radius: 50%;
display: inline-block;
transform-style: preserve-3d;
margin: 0 4px;
}
.busy-dot-shine {
display: block;
border-radius: 50%;
background: radial-gradient(circle at 25% 25%, #FFF, rgba(255,255,255,0));
background-color: #193987;
animation: rotr 4s linear …Run Code Online (Sandbox Code Playgroud) 我有以下路由规则:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"\d+"}
);
Run Code Online (Sandbox Code Playgroud)
以及具有以下操作的ProductController:
public Product Get(int id)
{
return _svc.GetProduct(id);
}
public int Post(Product p)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我可以Get按预期方式调用该操作:GET“ api / product / 2”
我以为我可以这样调用我的Post操作:POST“ api / product”,
但是它不起作用。我收到404错误。如果我这样做,它将起作用:POST“ api / product / 2”
我认为通过设置id的默认值RouteParameter.Optional,就意味着不需要显示url的{id}部分来匹配路由规则。但这似乎没有发生。制定另一条不包含URL的{id}部分的规则的唯一方法是吗?
我有点困惑。谢谢你的帮助。
我想使用下面的结构,但省略号没有显示.怎么了?
HTML:
<div>
<ul>
<li>One two three four five six seven</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
div {height:30px; overflow:hidden; background:#eee;}
ul {float:left; margin:0; padding:0;}
li
{
float:left;
height:28px; margin-left:4px;
border:solid 1px #000;
font: 10px/28px Arial; color:#333;
padding:0 4px;
width:100px;
text-overflow:-moz-ellipsis;
text-overflow:-webkit-ellipsis;
text-overflow:ellipsis;
}
Run Code Online (Sandbox Code Playgroud) angularjs ×4
asp.net-mvc ×2
css ×2
css3 ×2
sql ×2
sql-server ×2
t-sql ×2
angular-ui ×1
html ×1
jquery ×1
jquery-ui ×1
razor ×1