2013-10-02 28 views
1

我在我的asp.net mvc4 web應用程序中有一個視圖,用戶可以從中配置與它相關的一些事物。當用戶點擊這個視圖中的按鈕時,比方說,配置視圖,我想在另一個視圖中調用一個jquery函數,比方說,主視圖。這個jquery函數負責修改主視圖中的元素。從視圖中調用視圖B中的jQuery函數A

在配置視圖,其中按鈕是,我有下面的代碼,一些輸入文本框和按鈕(此呼籲採取行動的AddItem在配置控制器):

@using (Html.BeginForm("AddItem", "Configure", FormMethod.Post)) 
    { 
     @Html.DropDownListFor(m => m.CustomViewModel.SelectedItemId, Model.CustomViewModel.ListItems) 
     @Html.TextBox(...) 
     <input id="submitAdd" type="submit" value="@Resource.ButtonTitleAdd" /> 
    } 

那麼怎麼辦調用一個jQuery函數當用戶點擊配置視圖上的按鈕時,上述代碼的主視圖?

此外,我需要傳遞給這個jquery函數的值選擇配置視圖的下拉列表中。例如,如果下拉列表中包含:

「something1」 「something2」 「something3」

我需要通過在下拉列表中選擇的項目的價值。例如,如果用戶選擇「something1」並且其值爲1,則應將1傳遞給此jquery函數。此下拉列表中填充了一個模型。

回答

3

我會用一個自定義事件,您可以觸發並聽取任何你喜歡的地方解決它。

觸發這樣的:

$.event.trigger('customStuff', [arg1, arg2, argN]); 

而「聽」它是這樣的:

$(document).on('customStuff', function (e, arg1, arg2) { }); 
+0

好了,在我的主要觀點我聽此事件,並從配置圖,其中按鈕是,我觸發它。但如何觸發此事件按鈕點擊我的代碼發佈?我必須在那裏放置那條線?對不起,我是新的... – user304602

+0

@ user304602對不起,有一段時間了。你設法弄清楚了嗎? – Johan

+0

我認爲你可以聽提交事件(像這樣添加一個名字到你的表單中:'Html.BeginForm(「AddItem」,「Configure」,FormMethod.Post,htmlAttributes:new {@ name =「somename」})'和像這樣使用它:'$('form [name =「somename」]')。submit(function(){_trigger event_})',獲取數據在這篇文章中,例如:http://stackoverflow.com/問題/ 2276463/get-form-data-with-javascript-jquery – Elisa

1

正如您使用的是jQuery。我認爲像pubsub這樣的東西是你最好的選擇&它鼓勵基於事件的鬆耦合。例如:

(function($) { 

    var o = $({}); 

    $.subscribe = function() { 
    o.on.apply(o, arguments); 
    }; 

    $.unsubscribe = function() { 
    o.off.apply(o, arguments); 
    }; 

    $.publish = function() { 
    o.trigger.apply(o, arguments); 
    }; 

}(jQuery)); 

現在你可以使用這個代碼如下:

// You can pass your custom data here 
$.subscribe("firefunction", function(e, a, b, c) { 
    console.log(a + b + c); 
}); 

$.publish("firefunction", [ "a", "b", "c" ]); 
// logs: abc 

// Unsubscribe all handlers for this topic 
$.unsubscribe("firefunction"); 
相關問題