2013-03-18 62 views
2

服務正在返回data(原始$ http響應)而不是result(我想要傳回給我的控制器的處理版本),爲什麼promise內的代碼被忽略?服務返回意外結果,承諾被忽略

///in controller 
Romanize.get($scope.currentMaterial).then(function(d){ 
    $scope.romanized = d; 
}); 

//service 
app.factory('Romanize', ['$http', 'Position', function($http, Position){ 
    return{ 
     get: function(query){ 
      var url= Position.sections[Position.sectionNumber].romanizeService + "?korean=" + query; 
      var promise = $http.get(url).success(function(data) { 
       var parts = $(data).find("span"); 
       var array = []; 
       for (var x = 0; x<parts.length; x++){ 
        array.push(parts[x].title); 
       } 
       var result = array.join(""); 
       return result; 
      }); 
      return promise; 
     } 
    }; 
}]); 

回答

2

success處理程序不提供鏈。您應該使用then

var promise = $http.get(url).then(function(data) { 
    var parts = $(data).find("span"); 
    // ... 
    return result; 
}); 
+0

完美,三江源 – Tules 2013-03-18 19:33:31

+0

我認爲成功是一個被稱爲了成功的HTTP 200個狀態回調。那麼它有什麼用? – Tules 2013-03-18 19:38:36