看看我的小提琴。 http://jsfiddle.net/tyF7q/如果你使用setTimeout,angularjs奇怪的數據綁定行爲
也有一些是我不與angular.js的數據綁定明白:
如果你點擊「addSomething」多次,「TEST3」出現在每一次點擊。
現在,如果您點擊「addSomething2」,則什麼都不會顯示,甚至直到2009ms。
但是,如果你點擊「addSomething」,「test4」也會出現,但只有當你點擊2009ms後,否則「test4」也不會出現。
此外,如果您點擊「addSomething2」,並在2009年後你點擊「addSomething2」一個「test4」出現。
這只是一個簡單的例子,它出現在我使用的socket.io 並且有一些socket.on()事件綁定。 在這種情況下,我的「addSomething2」ng-click綁定將是socket.on('addSomething2'),但結果仍然相同。
因爲我是在angularjs新,我沒有看到我在這裏做錯了。
HTML:
<div ng-app>
<div id="edit" ng-controller="Edit">
<a href="" ng-click="addSomething()">addSomething </a><br>
<a href="" ng-click="addSomething2()"> addSomething2</a>
<div ng-repeat="doneMsgs in doneSoFar">
{{doneMsgs.status}}:{{doneMsgs.info}} <br>
</div>
</div>
</div>
JS:
功能編輯($範圍){
$scope.doneSoFar = [];
$scope.doneSoFar.push({status:"test",info:"test"})
var doneSoFarPush = function(status,info){
$scope.doneSoFar.push({status: status,info:info });
};
doneSoFarPush('test2','test2');
$scope.addSomething = function() {
doneSoFarPush('test3','test3');
};
$scope.addSomething2 = function() {
setTimeout(function(){
doneSoFarPush('test4','test4');
},2009);
};
};
嘗試'$ timeout'服務,而不是:http://docs.angularjs.org/api/ng.$timeout –
您是否嘗試過使用'$ timeout'服務由Angular提供? – DotDotDot