2013-03-08 198 views
-1

前點擊運行一些代碼有一個div中的數據綁定的onClick像這樣:在淘汰賽

data-bind='click: $root.addTable' 

是否有可能點擊調用之前運行一些javascript,如果satisfys一定的條件不調用點擊?

有點像? :

<div id="onThisClick" data-bind='click: $root.addTable'></div> 

$("#onThisClick").delegate("#all", "click", function() { 
if(isTrue){ 
} 
else { 
//run data binding as normal 
} 
} 

我正在執行一些驗證,並且需要將值傳遞給被調用的javascript函數。

+2

我不認爲你在嘗試什麼是可能的。爲什麼你不能在調用「click」時調用的函數中執行邏輯? – 2013-03-08 19:42:24

+0

@Rune Vejen Petersen ive更新了問題 – 2013-03-08 19:51:29

+0

@Gabe ive更新了問題 – 2013-03-08 19:51:52

回答

-1

我聽說過knockoutJS,我有興趣瞭解它,但在這個例子中,這對你沒有任何好處。 JQuery,另一方面:

$(function() { 
    $root = $("#root"); 
    $root.addTable = function() { 
     $root.html("Hooray!"); 
    }; 

    $("#onThisClick").on("click", function() { 
     $root.html(""); 
     if($("#theText").val().match(/sad/)){ 
      alert("Must not be sad to see table!"); 
     } 
     else { 
      $root.addTable(); 
     } 
    }); 

}); 

似乎工作得很好。您需要傳遞至addTable()的任何值都可以使用其他HTML5 data屬性進行訪問,而不會造成任何問題。 Check out the fiddle, and fork it to make it work for you

+0

-1。你的回答完全避免了在擊倒點擊之前做事情的問題*。將jQuery扔在一個問題上並不是一個通用的解決方案。 *你甚至在開始之前指出你不知道你在說什麼*!另外,它不是Knockout,它不是「做任何好事」,它試圖做一些甚至沒有意義的事情。 – Tyrsius 2013-03-09 00:42:33

2

爲什麼不直接在被調用的方法中進行檢查?

<div class="button" data-bind="click: $root.addTable">Click</div> 

// in javascript 
function RootViewModel() { 
    this.addTable = function() { 
     if(!condition) { 
      return; 
     } 
     // jumps out when a condition is met 

     // do what you're supposed to do here 
    } 
} 

沒有必要複雜它超過一個條件和回報。


編輯:如果您已經在使用jQuery,從HTML獲取值很容易。這裏是如果你使用一個隱藏字段的例子(你可以用val()檢索:

<input type="hidden" id="myvalue" value="true"></input> 

// in javascript code, select the element by it's id 
if ($("#myvalue").val()) return; 

// plain vanilla JS is a bit more verbose 
if (document.getElementById("myvalue").value === "true") return; 

可以玩弄this jsfiddle的想法

+0

+1這就是我的意思是調用你在「click」中調用的函數內部的邏輯 – 2013-03-08 20:14:05

+0

@Spoike條件取決於html文件中的javascript變量。條件代碼本身在一個單獨的文件中。這就是爲什麼我試圖調用它的條件之前,因爲我似乎無法弄清楚如何將HTML文件中的變量值傳遞給JavaScript文件。 – 2013-03-08 21:21:58

+0

@ user470184不太確定你的值是如何存儲在html文件中的,但我使用隱藏表單輸入字段進行了更新。也做了一個證明這一點的jsfiddle – Spoike 2013-03-08 21:34:19

0

我假設你的問題是你。已調用$root中定義的函數,但您想訪問$data(綁定時的視圖模型)的屬性。敲除使用apply()方法調用綁定函數,並將當前視圖模型作爲第一個參數傳遞。因此,您的$data在您的功能中可用作this(當它是c通過點擊事件調整)。