0

ASP.NET MVC 4 プロジェクトで Durandal JS を使用しています。

次のように、いくつかのオブザーバブルを Html ビューにバインドしようとしています。

 <div id="nodetype" class="k-block ">
     <div class="pull-left" >
         <h3>Enter HVaR Parameters</h3>
          <ul>
            <li>
             <label>Liquidataion Days):  </label>
             <input id="liquidDays" data-bind="value: LiquidDays" class="k-textbox" />
            </li>
          </ul>
      </div>                    
  </div>                    

ただし、「LiquidDays」オブザーバブルは「0」の値のままです。以下のViewModelコードが「LiquidDays」を更新し、それをhtmlテキストフィールドにバインドすることを期待しています:

ViewModel コード:

 var vm = kendo.observable({
    activate: activate,
    onclickUpdate: UpdateMyStuff,
    title: title,
    LiquidDays: 0,
    ConfLevelPct: 99,
    periodType: "",
    attached: function (view) {
        loadHVarConfig();     
        kendo.bind($("#nodetype"), vm);           
    },
});
return vm;

サーバー側へのAjax呼び出しを使用したバインディング関数は次のとおりです。

 function loadHVarConfig() {        

    // LOAD CONFIG PARAMETERS !!
    var jq = $.ajax({
        url: '/api/breeze/GetVaRConfig',
        type: "get",
        dataType: "json",
        contentType: 'application/json',            
    });
    jq.success(function (data) {
        bindHvarParams(data);              // ON SUCCESS BIND TO VIEW MODEL
    });

    }

    function bindHvarParams(data) {        

      // Set ViewModel properties from data array
      vm.set("LiquidDays", data[0].liquidationDays);        
      vm.LiquidDays = data[0].liquidationDays;
      vm.ConfLevelPct = data[0].confidenceLevel;
      vm.numOfObserv = data[0].historicPeriodLength_size;   
      vm.periodType = data[0].historicPeriodLength_unit;
      vm.holidayCal = data[0].calendarId;
      vm.startDateFixedPeriod = data[0].historicPeriodStart;

    }

このリンクをガイドとして使用していますが、何か不足しています: http ://docs.kendoui.c​​om/getting-started/framework/mvvm/observableobject

ありがとうございました。ボブ

4

2 に答える 2

0

最初に、剣道とデュランダルが互いにうまくプレイできるように、ここで概説されている手順に従っていることを確認してください: http://durandaljs.com/documentation/KendoUI/ .

次に、上記の手順に従った場合、モデル バインディングを機能させるにはdata-、HTML タグで正しい属性を使用する必要があります。デュランダルのビンディングは 、data-bind=""剣道のビンディングはdata-kendo-bind=""です。

第三に、上記の手順のため、デュランダル (別名、ノックアウト) スタイルのバインドと剣道スタイルのバインドを混在させることはできません。それらは完全に排他的であり、互いに互換性がありません。これは、Kendo オブザーバブル内にデュランダルでのみ機能する関数やプロパティを含めることはできないことを意味します。もっとわかりやすく言えば、剣道オブザーバブルを入れたり、中に入れactivateたりしてはいけません。attached代わりに、次のようにビューモデルを返す必要があります。

return {
  activate: activate,
  attached: attached,
  viewModel: kendo.obeservable({
    onclickUpdate: UpdateMyStuff,
    title: title,
    LiquidDays: 0,
    ConfLevelPct: 99,
    periodType: ""
  })
};
于 2013-11-08T19:28:32.507 に答える