2016-08-24 60 views
0

我試圖驗證通過調用服務器端API添加的標籤。以下是代碼。如何使用promise驗證ng-tags-input?

<tags-input ng-model="user.trucks" 
      add-on-space="true" 
      on-tag-adding="checkTruck($tag)"> 
</tags-input> 

和我寫的控制器,

$scope.checkTruck = function(tag){ 
    var x = $q.defer(); 

    someService.checkTruck(tag).then(function(response){ 
     x.resolve(true); 
    }, function(response){ 
     x.reject(false); 
    }); 

    return x.promise; 
}; 

雖然文件說,對標籤的添加可以採取承諾和確認添加標籤,它不工作的方式。我錯過了什麼?

+0

*「這不是那種方式」* - 究竟發生了什麼? – dfsq

回答

1

您確實需要從您的resolvereject處理程序返回值!

$scope.checkTruck = function(tag){ 
    var deferred = $q.defer(); 

    someService.checkTruck(tag).then(function(response){ 
     return deferred.resolve(true); 
    }, function(response){ 
     return deferred.reject(false); 
    }); 

    return x.promise; 
}; 

然後,我們可以刪除the explicit promise construction你有做,並且返回一個解決或拒絕承諾,會抱着你沒有布爾遞延對象。

$scope.checkTruck = function(tag){ 
    return someService.checkTruck(tag).then(function(response){ 
     return $q.when(true); 
    }, function(response){ 
     return $q.reject(false); 
    }); 
}; 

這就是我做我的驗證

指的$q docs更多關於.when