2

ビューを切り替えるアプリがありますがng-switch、ビューを切り替えると、タグ付け入力は特にその値を失い、オブジェクト文字列に分類されますが、他の入力ではこの問題は発生しません。

ここに画像の説明を入力してください

HTML:

<input ui-select2="version2" 
        id="keywordsGlobal" 
        name="keywordsGlobal" 
        class="region-keywords input-xlarge" 
        data-ng-model="data.keywordsGlobal" 
        required-multiple />

JSON:

[  
   {  
      "id":"[object Object]",
      "text":"[object Object]"
   }
]

これを具体的に防ぐ方法はありますか?

4

2 に答える 2

4

私は ui-select2 であらゆる種類の問題を抱えていましたが、単純なカスタム ディレクティブを作成しただけで、すべてが機能しました。angular、select2、およびタグ付けで問題が発生している場合は、試してみることをお勧めします。私にとってうまくいったのは、次のようなテンプレートです。

<input type="text" tag-list ng-model="item.tags">

item.tags は JavaScript 配列であり、コンマ区切りのタグの文字列などではないことに注意してください。カスタム ディレクティブと共に使用します (ui-select2 を使用せず、select2 のみを使用します):

app.directive('tagList', function($timeout) {
  return {
    require: 'ngModel',
    restrict: 'A',
    link: function(scope, element, attrs, controller) {
      scope.$watch(attrs.ngModel, function(value) {
        if (value !== undefined) {
          element.select2('val', value);
        }
      });

      element.bind('change', function() {
        var value = element.select2('val');
        controller.$setViewValue(value);
      });

      $timeout(function() {
        element.select2({
          tags: []
        });
      });
    }
  };
});
于 2013-06-26T22:50:12.777 に答える
3

その後の選択のロード時に、データが正しくロードされていないように見えました。データを選択に使用initSelect()して手動で再割り当てすると、問題が解決するようです。

http://jsfiddle.net/qdrjk/111/をご覧ください

$scope.version2 = {
    tags : null,
    initSelection: function(elem, callback) {
        console.log(elem);
        var data = $scope.data.keywordsGlobal;
        callback(data);
    },
    createSearchChoice : function(term, data) {
        if ($(data).filter(function() {
            return this.text.localeCompare(term) === 0;
        }).length === 0) {
            return {
                id : term,
                text : term
            };
        }
    }
}
于 2013-03-05T00:24:54.047 に答える