2014-09-12 13 views
0

我在這裏追逐我的尾巴。我所要做的就是從$ scope.getPlacesTextRaw函數返回一個字符串。角延期環

$scope.getPlacesTextRaw = function(selectedPlace){ 

    mentionsFactory.getPlaceMetaData(selectedPlace).then(function(metadata) { 
     console.log("here is our metadata", metadata); 
     return metadata.description.replace(/ /g,"_"); 
    }); 

}; 

的另一種嘗試:

$scope.getPlacesTextRaw = function(selectedPlace){ 
    var deferred = $q.defer(); 

    mentionsFactory.getPlaceMetaData(selectedPlace).then(function(metadata) { 
     console.log("here is our metadata", metadata); 
     deferred.resolve('@' + metadata.description.replace(/ /g,"_")); 
    }); 

    deferred.promise.then(function(string){ 
     return string; 
    }); 
}; 

我從指令中調用getPlacesTextRaw:

<mentio-menu 
    mentio-for="'hashtag'" 
    mentio-trigger-char="'@'" 
    mentio-items="places" 
    mentio-template-url="/places-mentions.tpl" 
    mentio-search="searchPlaces(term)" 
    mentio-select="getPlacesTextRaw(item);"> 
</mentio-menu> 
+0

如何調用函數getPlacesTextRaw?而不是像{{getPlacesTextRaw()}}這樣的html? – sylwester 2014-09-12 20:04:27

+0

@ That1guyoverthr:您正在使用一些異步編程(無論是使用promise還是回調或其他),所以您無法返回字符串。您可以返回一個解析爲字符串的承諾。根據你的用例,你也可以返回一個包含一個空字符串屬性的對象,這個對象在準備就緒時被分配實際的字符串)。 – gkalpak 2014-09-12 20:08:57

+0

@sss我更新了我的問題以回答你的問題。 – That1guyoverthr 2014-09-12 20:18:03

回答

0

的ment.io團隊已經更新了他們的產品支持承諾。活泉!

0

,所以我想:) 請看這裏https://docs.angularjs.org/error/$rootScope/infdig?p0=10&p1=%5B%5D秒塊

你有變化的方法請看演示:http://jsbin.com/kakim/2/edit

mentio-select="getPlacesTextRaw(item) insetead做mentio-select="PlacesTextRaw"

$scope.PlacesTextRaw = ""; 

    $scope.getPlacesTextRaw = function (selectedPlace) { 
     mentionsFactory.getPlaceMetaData(selectedPlace).then(function (metadata) { 
      console.log("here is our metadata", metadata); 
      $scope.PlacesTextRaw = metadata.description.replace(/ /g, "_"); 



     }); 

    }; 

    $scope.item = "test" 

    function activate() { 

     $scope.getPlacesTextRaw($scope.item); 
    } 
    activate(); 
+0

對不起@sss,但我不理解。 jsbin不工作(空白輸出)。我試圖實現你的解決方案(以許多不同的方式,我只是困惑).. – That1guyoverthr 2014-09-12 22:06:17

+0

更具體地說,我只是沒有得到什麼activate()試圖做。這個例子只是返回一個空白到視圖,因爲$ scope.PlacesTextRaw =「」@sss – That1guyoverthr 2014-09-12 22:12:47

+0

@ That1guyoverthr輸出是空的,因爲沒有你的'mentio-menu'指令的代碼,但請檢查控制檯。激活()基本上是一個函數,當你的控制器激活時,將運行 – sylwester 2014-09-12 22:16:47