2014-03-07 84 views
1

我正在閱讀掌握Web應用程序開發與AngularJS本書,在第3章中,當autor拿着$ q並承諾他們寫和一個$超時的例子。

的index.html

<h1>Hello, {{name}}!</h1> 

controller.js

$scope.name = $timeout(function() { 
    return "World"; 
}, 2000); 

的事情是,我測試的代碼,這不工作對我來說,我沒有如果我寫了一些錯誤的,我寫了它,看了幾次,但我不知道錯誤在哪裏。

我更改代碼的控制器:

$timeout(function() { 
    $scope.name = "World"; 
}, 2000); 

,並完美地工作。

任何人都知道爲什麼會這樣?我包括例如here

回答

2

的普拉克這是因爲超時收益承諾,而不是一個字符串。返回內部回調返回將沿着鏈傳遞的內容。

使用這將是正確的方法:

$timeout(function() { 
      return "World"; 
    }, 2000).then(function(p) { 
     $scope.name = p; 
    });