2013-11-21 20 views
0

我試圖創建附加的網格模板,刪除和有約束力的,很像一個在教程。防止下拉菜單更改淘汰賽

在這個模板http://jsfiddle.net/mouseoctopus/Qy736/,我想使它這樣,每個下拉菜單中帶有獨特的價值 - 即。沒有重複的價值 - 所以我試圖添加邏輯到變化塊。

如果我使用jQuery來處理事件我可能會嘗試綁定到變化並確定該值當前由另一個下拉列表中選擇,並阻止默認值,如果它發生了。

使用此相同的行爲可能擊倒?

我的事件被解僱,但我無法阻止違約。

相關的代碼如下

HTML

<td><select data-bind="options: $root.PhoneTypes, value: name, optionsText:'name', 
      event: { change: $root.changeType}" ></select></td> 

查看

self.changeType = function(data, event){ 
     return false; 
    }; 

看到小提琴http://jsfiddle.net/mouseoctopus/Qy736/的活生生的例子

我超級福利局淘汰賽< 2天,所以我很可能不會理解這個文檔等在 此頁面http://knockoutjs.com/documentation/value-binding.html,它確實提到添加屬性changeBubble:假的,但是這沒有似乎真的幫助。

問:我/我怎樣才能防止選擇變化的條件發生(這樣我可以插入此行爲的自定義驗證)

回答

1

JSFiddle

我不知道反正停止事件如你所願。但是,您可以存儲以前的值,然後改回如果用戶嘗試選擇以前選擇類型:

function PhoneNumber(type, number, comment) { 
    var self = this; 

    self._type = type;  
    self.type = ko.observable(type); 
    self.number = number; 
    self.comment = comment; 
} 

function PhoneNumbersViewModel() { 
    var self = this; 

    self.subTitle = ko.observable("Call Me Maybe"); 

    self.PhoneTypes = [ 
     { name: "Fax" }, 
     { name: "Home" }, 
     { name: "Mobile" }, 
     { name: "Work" } 
    ];  

    self.phoneNumbers = ko.observableArray([ 
     new PhoneNumber(self.PhoneTypes[0], "500-555-5555", "Phoney") 
    ]); 

    self.addPhoneNumber = function() { 
     self.phoneNumbers.push(new PhoneNumber(self.PhoneTypes[0], "", "")); 
    } 

    self.removePhoneNumber = function(number) { 
     self.phoneNumbers.remove(number); 
    } 

    self.clearSubtitle = function(){ this.subTitle(""); } 

    self.changeType = function(data, event){ 
     if(self.phoneNumbers().some(function(number) { 
      return number != data && number.type().name == data.type().name; 
     })) { 
      data.type(this._type); 
     } else { 
      this._type = data.type(); 
     } 
    }; 
} 

不能解決新項目的問題被設定爲一個類型可能已經選擇...但這不是你要求的。

+0

整潔的解決方案。謝謝 – user1778606

+0

我不確定你是否感興趣,但我想出了一個替代解決方案來解決我的問題 - 我刪除了不應該從下拉列表中選擇的項目。它有點複雜。請參閱http://jsfiddle.net/mouseoctopus/2552K/ – user1778606