2013-10-08 52 views
1

嗨我想用Durandal(http://jsfiddle.net/anasnakawa/6XvqX/381/), 使用Select2(多選),但彈出窗口不工作下面是我的虛擬機和HTML的一部分,在這裏我試圖綁定狀態列表輸入它應該工作作爲自動完成,但似乎顯示選擇彈出菜單的問題,可以有人幫使用Select2與Durandal

define(['durandal/app', 'services/datacontext', 'plugins/router', 'services/bindinghandlers'], 
function (app, datacontext, router) { 
    var withs = ko.observableArray(), 
     states = [ 
    { id: "AL", text: "Alabama" }, 
    { id: "AK", text: "Alaska" }, 
    { id: "AZ", text: "Arizona" }, 
    { id: "AR", text: "Arkansas" }, 
    { id: "CA", text: "California" }, 
    { id: "CO", text: "Colorado" }, 
    { id: "CT", text: "Connecticut" }, 
    { id: "DE", text: "Delaware" }, 
    { id: "FL", text: "Florida" }, 
    { id: "GA", text: "Georgia" }, 
    { id: "HI", text: "Hawaii" }, 
    { id: "ID", text: "Idaho" }, 
    { id: "IL", text: "Illinois" }, 
    { id: "IN", text: "Indiana" }, 
    { id: "IA", text: "Iowa" }, 
    { id: "KS", text: "Kansas" }, 
    { id: "KY", text: "Kentucky" }, 
    { id: "LA", text: "Louisiana" }, 
    { id: "ME", text: "Maine" }, 
    { id: "MD", text: "Maryland" }, 
    { id: "MA", text: "Massachusetts" }, 
    { id: "MI", text: "Michigan" }, 
    { id: "MN", text: "Minnesota" }, 
    { id: "MS", text: "Mississippi" }, 
    { id: "MO", text: "Missouri" }, 
    { id: "MT", text: "Montana" }, 
    { id: "NE", text: "Nebraska" }, 
    { id: "NV", text: "Nevada" }, 
    { id: "NH", text: "New Hampshire" }, 
    { id: "NJ", text: "New Jersey" }, 
    { id: "NM", text: "New Mexico" }, 
    { id: "NY", text: "New York" }, 
    { id: "NC", text: "North Carolina" }, 
    { id: "ND", text: "North Dakota" }, 
    { id: "OH", text: "Ohio" }, 
    { id: "OK", text: "Oklahoma" }, 
    { id: "OR", text: "Oregon" }, 
    { id: "PA", text: "Pennsylvania" }, 
    { id: "RI", text: "Rhode Island" }, 
    { id: "SC", text: "South Carolina" }, 
    { id: "SD", text: "South Dakota" }, 
    { id: "TN", text: "Tennessee" }, 
    { id: "TX", text: "Texas" }, 
    { id: "UT", text: "Utah" }, 
    { id: "VT", text: "Vermont" }, 
    { id: "VA", text: "Virginia" }, 
    { id: "WA", text: "Washington" }, 
    { id: "WV", text: "West Virginia" }, 
    { id: "WI", text: "Wisconsin" }, 
    { id: "WY", text: "Wyoming" } 
     ]; 
    var vm = {   

     withs: withs,    
     states: states, 

    }; 

    return vm; 
}); 

<select multiple="true" data-bind="options: states, optionsValue: 'id', optionsText: 'text', selectedOptions: withs, select2: {}" style="width: 300px"></select> 
+0

哪裏是你的選擇2自定義綁定處理程序? –

回答

0
  1. 註冊select2裏面main.js的Require.js配置:

    requirejs.config({ 
        paths: { 
        'select2': 'path/to/select2' 
        } 
    }); 
    
  2. 定義它在你的視圖模型:

    define(['select2'], function (select2) { 
        // ... 
    }); 
    
  3. 不要忘了申報。你將不得不使用attached回調:

    var vm = { 
        withs: withs, 
        states: states, 
        attached: function() { 
        $('select').select2(); 
        } 
    }; 
    
+1

我並不是想聽起來很刺耳,但對於自定義綁定處理程序來說,這是一個完美的情況。通過使用附加的事件,您將不得不在DOM操作的視圖模型中添加大量代碼。/ –

+0

是的,您是對的。特別是如果你在同一頁面上處理多個選擇。我意識到這一點,因爲我正在查看OP提供的jsFiddle。 – Norbert