C# бритва select2 отключена - PullRequest
1 голос
/ 21 апреля 2020

Есть ли способ, которым я могу установить этот select2, чтобы отключить только чтение, если есть значение в option.AgentName? Я добавил метод selectElement.select2. Что я могу добавить к обратному вызову?

Это правильный способ сделать это? использование self.entry.Agent.AgentName! = ""?

Просмотр

<div class="form-group sentence-part-container sentence-part ng-scope ui-draggable sentence-part-entry-agent sentence-part-with-select2-single" [class.has-errors]="entry.IsInvalid && entry.IsTouched">
   <div class="sentence-part-values">
       <div class="sentence-part-values-select2-single">
           <select class="form-control" style="width: 300px" [(ngModel)]="entry.Agent.VersionKey">
               <option *ngFor="let option of agents" [value]="option.VersionKey">{{option.AgentName}}</option>
           </select>
       </div>
   </div>
</div>

ts файл

$selectElement.select2({
   initSelection: function(element, callback) {
   console.log(self.entry.Agent.AgentName);
   if (self.entry.Agent.AgentName != "")
   {
      console.log('disabled');
      $selectElement.prop('disabled', true);
   }
       callback({ id: self.entry.Agent.VersionKey, text: self.entry.Agent.AgentName });
   },
   placeholder: "Select an agent"
})
.on("change", (e) => {
   self.ngZone.run(() => {
       self.entry.Agent.VersionKey = $selectElement.val();
       self.entry.AgentVersionKey = self.entry.Agent.VersionKey;

       let regimenEntryAgent = this.getRegimenEntryAgentByVersionKey(self.entry.Agent.VersionKey);
       if (regimenEntryAgent) {
           self.entry.Agent.AgentId = regimenEntryAgent.AgentId;
       }

       self.onSentenceChange(null);                    
   });
})
.on("select2:close", () => {
   self.entry.IsTouched = true;
   this.validate();
});    

1 Ответ

1 голос
/ 26 апреля 2020

Вы можете попробовать применить логи c в newData.push() методе Select2.

ajax: {
    url: '/DemoController/DemoAction',
    dataType: 'json',
    delay: 250,
    data: function (params) {
        return {
            query: params.term, //search term
            page: params.page
        };
    },
    processResults: function (data, page) {
        var newData = [];
        $.each(data, function (index, item) {

            // apply some logic to the corresponding item here
            if(item.AgentName == "x"){

            }
            newData.push({
                    //id part present in data 
                    id: item.Id,     
                    //string to be displayed
                    text: item.AgentName 
            });
        });
        return { results: newData };
    },
    cache: true
},

Обновление: Рекомендуется объявить параметры конфигурации, передав объект при инициализации Select2. Однако вы также можете определить параметры конфигурации, используя атрибуты HTML5 data- * .

Для других опций Select2 смотрите Опции .

...