1
我在使用ngTagsInput時遇到綁定對<autocomplete source='fnPromise()'>
的承諾的問題。我認爲ngTagsInput沒有任何問題;我認爲我不瞭解範圍和承諾,足以理解如何去做我想做的事情。
我設置的指令正常:
<tags-input ng-model="token.ids.tags"
class="form-field no-animate tag-input"
placeholder="Delete unwanted IDs"
addFromAutocompleteOnly="true">
<auto-complete source="offerTags($query)"></auto-complete>
</tags-input>
問題在於offerTags()函數。這將返回一個承諾,而是因爲我想填充這是此控制器的$範圍的一部分陣列自動完成的,我告訴許剛返回$ scope屬性:
$scope.offerTags=function(query) {
var deferred=$q.defer();
var tags=$scope.token.ids.tags;
deferred.resolve(tags);
return deferred.promise;
}
然而,$ scope.token.ids .tags僅在服務返回後(在頁面加載後)纔會填充。所以會發生的是,offerTags總是返回一個空數組。該承諾不會更新token.ids.tags服務的新值。
編輯:Plunkr demonstrating problem
也就是說,如果你有一個靜態數組,然後自動完成功能的作品,但只有靜態數組的內容替換$ scope.token.ids.tags。
對不起,很長的解釋...任何想法如何我可以得到這個工作?
我們可以看到服務?它回覆了一個承諾嗎? –
'offerTags'(上面引用的)是返回承諾的服務。 '$ scope.token.ids.tags'在各個地方被更新爲$ http請求的回調。 – metalaureate
我猜ngTagsInput在這裏是一個紅鯡魚 - 問題是這個承諾沒有反映$ scope的變化值。 – metalaureate