2013-09-24 47 views
0

I'm具有該敲除環:引導標籤在動態敲除手風琴

<div id="accordion" data-bind="jqAccordion: { },template: { name: 'task-template', foreach: ¨Tasks, afterAdd: function(elem){$(elem).trigger('valueChanged');} }"></div> 

    <script type="text/html" id="task-template"> 
     <div data-bind="attr: {'id': 'Task' + TaskId}, click: $root.SelectedTask" class="group"> 
      <h3><b><span data-bind="text: TaskId"></span>: <input name="TaskName" data-bind="value: TaskName"/></b></h3> 
      <p> 
       <label for="Description" >Description:</label><textarea name="Description" data-bind="value: Description"></textarea> 

       <!-- HERE I want to put the Tags for the current task --> 

      </p> 
     </div> 
    </script> 

其中 self.Tasks()= ko.observableArray(); 在我的視圖模型,填充這樣的:

self.Tasks()推(新任務(數據);其中

Task = function(data) { 
var self=this; 
self.TaskId = ko.observable(data.TaskId); 
self.Description = ko.observable(data.Description); 
self.TaskTags = ko.observableArray(); 
} 

self.TaskTags然後與從所收集的標籤陣列後填充。 。和所有的任務id過濾

外淘汰賽環,下面標記的工作原理:

<input type="text" name="tags" placeholder="Tags" class="tagsManager"/> 
    <input type="hidden" value="Pisa, Rome" name="hiddenTagList"> 

$(function() { 
       $(".tagsManager").tagsManager({ 
        prefilled: ["Pisa", "Rome", "Oslo"], 
        //prefilled: viewModel.Tags().TagName, 
        CapitalizeFirstLetter: true, 
        preventSubmitOnEnter: true, 
        typeahead: true, 
        typeaheadAjaxSource: null, 
        typeaheadSource: ["Pisa", "Rome", "Milan", "Florence", "Oslo", "New York", "Paris", "Berlin", "London", "Madrid"], 
        delimeters: [44, 188, 13], 
        backspace: [8], 
        blinkBGColor_1: '#FFFF9C', 
        blinkBGColor_2: '#CDE69C', 
        hiddenTagListName: 'hiddenTagListA' 
       }); 
      }); 

但是,「class」在我的循環中必須是動態的。我想我可以像實現這一目標:

<input type="text" placeholder="Tags" data-bind="attr: {'class': 'tagsManager' + SceneId}" /> 

的問題是我怎麼綁定tagsManager這些動態元素?另外:對於每個任務,我都有一個self.TaskTags = ko.observableArray(/ *從數據庫加載* /);

而不是循環好的城市的靜態列表我想要顯示附加到實際任務的標籤。

回答

0

動態設置上的元素類,可以使用與css可觀察到的,其值是類(或類列表)結合添加到任何已靜態指定作爲元素的類。

要綁定tagsManager到元素創建它們,創建自定義的綁定類型:

ko.bindinghandlers.tagsManager={ 
    init: function(element) { 
    $(element).tagsManager(
     ... 
    ); 
    } 
}; 

,然後包括tagsManagerdata-bind屬性的元素不是需要它。