我想要一个自定义$watch
。我会在变量上制作这款手表。我希望当变量的值被更改为查看消息时,以及当变量未更改其值以查看另一条消息时。
一个例子是下一个:我有一个文本框,我在用户写东西时观察。我希望在他写东西时看到一条消息,并在停下来看另一条消息。
答案 0 :(得分:0)
您可以查看超时:
[HttpPost]
public ActionResult Index(Models.customer cs )
{
if(isValid(cs.email, cs.password))
{
Session["user"] = cs.email;
FormsAuthentication.SetAuthCookie(cs.email, false);
customer c = customerEntity.customers.Single(e => e.email == cs.email);
return MemberInfo(c);
}
ModelState.AddModelError(string.Empty, "Authentication Failed");
return View(cs);
}
答案 1 :(得分:0)
我建议的概念在许多javascript库中称为debounce
。你给一个函数来调用和一个必须通过的时间长度,而不会在触发回调之前再次调用该函数。通常,您也可以提供在初始调用时触发回调的选项。这将允许您在第一次调用时翻转开关,然后在没有再次调用该函数的情况下经过一段时间后将其翻转。
请参阅:http://davidwalsh.name/javascript-debounce-function
前:
(更好的示例是使用debounce
创建$timeout
服务,无需$scope.$evalAsync()
)
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
var toggle = debounce(function() {
$scope.typing = !$scope.typing;
$scope.$evalAsync();
}, 500, true)
$scope.$watch('name', toggle)
});
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this;
var args = arguments;
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow){
func.apply(context, args);
}
function later() {
timeout = null;
func.apply(context, args);
}
};
}