2017-04-23 1 views
0

Durandal을 사용하여 관찰 가능한 플러그인을 사용하여 ES5 getter 및 setters를 사용할 수 있습니다. 여기 Durandal 위젯이 상위 뷰 모델의 값을 업데이트하지 않습니다.

위젯의 viewmodel.js입니다 :

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> 
나는 값을 사용하고 텍스트 상자에 결합하는 간단한 위젯을 만든

위젯을 사용할 때 값이 ko.observable로 전달되면 모든 것이 예상대로 작동합니다. 그러나 관찰 가능한 플러그인에서 제공하는 ES5 getter/setter 메서드를 사용하면 위젯의 값을 수정해도 상위 뷰 모델이 업데이트되지 않습니다. 부모 뷰의 값을 수정하면 비록 위젯을 업데이트 않습니다

<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> 

내가 부모보기로 다시 밀려에서 값을 방해하는 그 뭔가를 잘못하고있는 중이 야 : 여기
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; 
}); 

부모 뷰의 모델?

답변

0

보기에서 변경 한 사항이 View Model에 반영 될 수 있도록 관찰 가능 속성을 정의/사용하여 양방향 바인딩을 만들어야합니다.

this.value = ko.observable ('Test'); 귀하의 요구 사항에 맞게 작동합니다.

관련 문제