簡體   English   中英

使用剔除訪問viewModel屬性的值?

[英]Access value of viewModel property with knockout?

我有三個不同的“汽車燃料”類型頁面,它們呈現一個“局部視圖”以加載這三個頁面的通用功能。 我正在使用淘汰賽js在該局部視圖中執行一些動態計算。

因此,我的每個Fuel類型頁面都有一個BeginForm並且每個DieselForm,PetrolForm和ElectricForm的ID都不同。 燃料類型在我的viewModel中設置,並存儲在隱藏視圖的公共局部視圖中- @Html.HiddenFor(model => model.FuelType)

以下是我在部分視圖中的淘汰賽js:

    var mvcModel = @Html.Raw(Json.Encode(Model));
    var viewModel = ko.mapping.fromJS(mvcModel);


    var calculateTotal = function() {

        var form = $('#DieselContent form');
        if (!form.valid()) return;

        var formData = form.serialize();

      //ajax post to server method removed for brevity

有沒有辦法我可以從viewModel屬性中獲取FuelType值,然后根據所設置的FuelType動態更改表單var-即-它應該是var form = $('#DieselContent form'); var form = $('#PetrolContent form'); var form = $('#ElectricContent form');

我嘗試使用var fuelType = viewModel.FuelType.val(); 但這會引發未定義的錯誤。

有很多方法可以實現所需的結果,因此您選擇的方法取決於體系結構決策。 如果僅嚴格引用ViewModel,則可以使用

 var form = $('#' + viewModel.FuelType() + 'Content form');

但是,在這種情況下,CalculateTotal引用了一個表單(表示的一部分),因此它似乎並沒有嚴格地與ViewModel關聯。 因此,在這種情況下,我很想從MVC模型中選擇表單。

var computeTotal = function(){

    var form = $('@String.Format("#{0}Content form", Model.FuelType)');
    if (!form.valid()) return;

    var formData = form.serialize();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM