在我的一行代码我有类似的东西:AngularJs或JavaScript等待一些条件
...
while(!$scope.isMyTurn(privilege)){}
I will run next line of codes
然而像往常一样它阻止我的浏览器。我必须等到真正运行下一行代码。我不想阻止浏览器和其他功能应该工作,因为(其他一些被触发的事件会改变我的状况)用户应该继续他所做的一切。
这是为了刷新图形,直到轮到我。
在我的一行代码我有类似的东西:AngularJs或JavaScript等待一些条件
...
while(!$scope.isMyTurn(privilege)){}
I will run next line of codes
然而像往常一样它阻止我的浏览器。我必须等到真正运行下一行代码。我不想阻止浏览器和其他功能应该工作,因为(其他一些被触发的事件会改变我的状况)用户应该继续他所做的一切。
这是为了刷新图形,直到轮到我。
你应该做的是这样的:
$scope.$watch("isMyTurn(privilege)",function(val){
if(val){
//I will run next line of codes
}
});
,而不是要尝试做.. 注意,在这种情况下什么,privilege
应该也是一个scope
变量就像
$scope.privilege
如果你不想要它是一个scope
变量只是不传递它作为参数。但直接访问它的功能..
希望这会有所帮助..
我已经解决了它通过古典的Javascript方式,但最好是用功能上的Angular Js来完成。你能解释一下val变量吗?我怎样才能改变频率来检查下一次观看时间? – kamaci 2013-02-18 06:41:32
权限不是范围变量它是一个定义的变量,但我得到了它的未定义? – kamaci 2013-02-18 08:23:56
适用范围的语法$ watch是 $ scope。$ watch(“isMyTurn(privelege)”,function(newVal,oldVal){if(newVal!== undefined){ //在这里做你的东西...... } }); 我相信你已经知道角度工作与脏检查。因此,当监视表达式的值更改时,角度调用回调函数为您提供新值和该表达式的旧值..此函数多少次被称为是不能保证的,所以你不应该依赖它.. – ganaraj 2013-02-18 09:22:22
我不知道angularJS但在正常的JavaScript,你可以使用setTimeout
function whenReady()
{
if ($scope.isMyTurn(privilege)){
I will run next line of codes
}
else
{
window.setTimeout(whenReady, 1000);
}
}
window.setTimeout(whenReady, 1000);
请不要这样做..这是不正确的做法.. atleast的方式.. – ganaraj 2013-02-15 12:01:38
考虑使用$范围。$手表功能。
做了任何答案的帮助吗? – 2013-02-16 17:55:18
@ShaiRez我已经解决了古典Javascript方式的问题,但我期待实现它与$手表 – kamaci 2013-02-18 06:42:11