2016-01-20 25 views
0

我知道這可能是一個容易回答的問題,但我無法解決它。我需要加1的數,並返回一個承諾的功能。

這裏是一個fiddle

失敗的例子

var incrementingFn = function() { 

    return $q(function(resolve,reject) { 
    var n = 0; 

    $q.resolve(function() { 
     n += 1; 
     return n; 
    }()); 
    } 
} 


incrementingFn().then(function(res) { 
    var num = res; 
} 

回答

0

有很多你在代碼正在做的事情不正確。

這裏是他們的名單。

  1. 使用太舊的角度參考,請使用最新的角度參考。
  2. 你的控制器應綁定到你所創建的模塊。 Detail explanation here
  3. 在您解決問題時,您錯過了關閉方框}
  4. 和數量的聲明應該有外功能,@charlietfl說。

代碼

var myApp = angular.module('myApp', []); 

//myApp.directive('myDirective', function() {}); 
//myApp.factory('myService', function() {}); 
myApp.controller('MyCtrl', MyCtrl) 

function MyCtrl($scope, $q) { 
    $scope.name = 'Superhero'; 
    var n = 0; 
    var incrementingFn = function() { 

    return $q(function(resolve, reject) { 


     resolve(function() { 
     n += 1; 
     return n; 
     }()); 
    }) 
    } 

    incrementingFn().then(function(res) { 
     $scope.num = res; 
    } 
); 
} 

Working Fiddle

0

你有語法問題,以及在你的代碼中的其他邏輯問題

嘗試

var n = 0; 

    var incrementingFn = function() { 
    return $q(function(resolve, reject) { 
     n++; 
     resolve(n);  
    }); 
    } 

    incrementingFn().then(function(res) { 
    $scope.num = res; 
    }); 

一個主要的一點是,如果你打算再次增加的數量,您不希望每次都將其聲明爲0裏面的功能,否則將始終返回1

DEMO