2017-04-23 5 views
0

私はDurandalを使用して、観測可能なプラグインを有効にしてES5ゲッターとセッターを利用しています。Durandalウィジェットは親ビューモデルの値を更新しません

define([], function() { 
    var ctor = function() { 
     this.activate = function (settings) { 
      this.value = settings.value; 
     } 
    }; 

    return ctor; 
}); 

そしてここでウィジェットのview.htmlだ:

<span> 
    This textbox is in the widget: 
    <br /> 
    <input type="text" data-bind="value: value" /> 
</span> 
ここでは、ウィジェットのviewmodel.jsだ

:私は値を取り、テキストボックスにバインドし、簡単なウィジェットを作成しました

ウィジェットを使用する場合、値がko.observableとして渡されると、すべてが期待通りに機能します。ただし、observableプラグインが提供するES5 getter/setterメソッドを使用すると、ウィジェット内の値を変更しても、親ビューモデルが更新されることはありません。親ビューで値を変更するかのウィジェットを更新しない:

define(['durandal/app', 'knockout'], function (app, ko) { 
    var ctor = function() { 
     this.value = ko.observable('Test'); // This works as expected 
     this.value = 'Test'; // This does not work 
    }; 
    return ctor; 
}); 

は、ここで親ビューです:

<section> 
    <h1>Widget Test</h1> 
    This textbox is not in the widget: 
    <br /> 
    <input type="text" data-bind="value: value" /> 
    <br /><br /> 
    <div data-bind="widget: { kind: 'testWidget', value: value }"></div> 
</section> 

私は戻って、親ビューにプッシュされてから値を妨げている何か間違ったことをやっていますモデル?

答えて

0

ビューで行われた変更がビューモデルに反映されるように、オブザーバブルプロパティを定義して使用する必要があります。

this.value = ko.observable( 'Test');あなたの要求に応えます。

関連する問題