8

我正在尝试在 ngTagsInput 中使用自动完成功能,但出现以下错误:

Error: [ngRepeat:dupes] http://errors.angularjs.org/1.2.9/ngRepeat/dupes?p0=item%20in%20suggestionList.items%20track%20by%20track(item)&p1=undefined
    at Error (native)

或者

TypeError: Cannot read property 'replace' of undefined
    at j (https://localhost:3000/js/plugins/ng-tags-input.min.js:1:5556)

我已经检查了好几次,我的查询函数正在返回一个正确的标签数组,而且确实如此。它工作得很好。标签的结构如下所示:

{ 
name: String, 
_id: ObjectId, 
__v: Number, 
active: Boolean, 
display: Boolean, 
createDate: Date
}

我的 html 看起来像:

<tags-input
    ng-model="tags"
    displayProperty="name"
    placeholder="Add a tag">
    <auto-complete source="loadTags($query)"></auto-complete>
</tags-input>

我的 loadTags 函数是:

$scope.loadTags = function(query) {

    return $http.get(configService.getApi() + '/tags?conditions=' + urlEncodeObject({name: { $regex: query }}), {
        headers: {
            'x-auth-token': sessionService.getToken()
        }
    });
};
4

4 回答 4

5

displayProperty 应该是 display-property。嗬!

于 2014-07-31T04:43:40.807 回答
1

Dupes - 这意味着 ngRepeat 的索引是重复的。你必须使用 smth like

ng-repeat="item in items track by $index"

于 2014-07-31T04:27:02.290 回答
1

// ng-repeat not check [key-property="text"]
// <tags-input ng-model="ruzhu_ids"  class="ui-tags-input"   placeholder=" "  
// add-from-autocomplete-only="false"
// key-property="text"
// > 
// </tags-input>	
// before you change tags,check dup self ,make text unique 
var can_add_tag = true;
angular.forEach($scope.ruzhu_ids, function(data, index) {
  if (data.text == result.text) {
    can_add_tag = false;
  }
});
if (can_add_tag) {
  $scope.ruzhu_ids.push(result);
}

于 2017-06-20T10:06:51.790 回答
0

在标签输入上添加 key-property="key",其中键值对每个对象都是唯一的。

<tags-input
    ng-model="tags"
    displayProperty="name"
    key-property="id" /* here id is a key with unique value */
    placeholder="Add a tag">
    <auto-complete source="loadTags($query)"></auto-complete>
</tags-input>
于 2016-12-15T14:00:01.460 回答