2016-03-07 80 views
0

是否有另一种方法可用于执行以下操作?这个jQuery函数在Angular $ scope中使用,并且它可以正常工作,但是它会抛出一个$ apply错误,本质上是因为它在$ apply中被看作$ apply。然而,如果我删除$ scope。$ apply()行,它将停止工作。

function myfunction(start, end) { 
     // Lots of jQuery code here - omitted from this example 

     // Update the scope 
     $scope.myf = "abc"; 
     $scope.myt = "def"; 
     $scope.$apply(); 
} 

myfunction(); 
+0

_“它工作正常,但它会抛出一个$应用错误” - 它不能既工作又不工作。 – zeroflagL

+0

所需的输出已生成,但它会引发错误。也许我应该重新说话。 – Rob

回答

0

改为使用$scope.$evalAsync()。它不会抛出错误,并在这种情况下执行相同的操作。

+0

谢谢。因为这个函数没有绑定到jQuery事件 - 这个解决方案完美地工作。 – Rob

1

将您的代码包装在$ timeout中或使用$ apply()。请注意,$ timeout在内部调用$ apply()。 $ apply是专门用角度来重新同步外部更改(不是在角度循环中)。

如果您的功能触发点击或事件。您可以使用ng-click或ng- [event]指令将函数绑定到角度。