WinJS View 코드와 Windows 런타임 구성 요소 ViewModel 코드간에 데이터 바인딩이 작동하지 않는 것 같습니다. 이 사이트에 대한 제안이나 조언C# Windows 런타임 구성 요소 클래스 WinJS 바인딩
저는 Xaml/C# 배경에서 왔지만 내 UI (일명보기) HTML/WinJS를 만들 필요가 있습니다. 그래서 HTML/WinJS를 Xaml + C# - 코드 숨김과 비슷한보기로 취급합니다. 그러나 나는 C# 코드를 사용하여 다른 모든 것을 작성하고 싶습니다. 따라서 Windows 런타임 구성 요소 프로젝트에서 내 ViewModels를 만들고 WinJS에서 ViewModel 인스턴스를 나타내는 로컬 변수를 설정합니다. 그러나 ViewModel에서 간단한 문자열 속성에 바인딩하려고하면 다음과 같은 JavaScript 예외가 발생합니다.
ms- appx : //의 8652 행 17 열에서 JavaScript 라이브러리 코드에서 예외가 걸릴 예정입니다 microsoft.winjs.1.0/JS/base.js 는 0x800a13d5 - 자바 스크립트 런타임 오류 : 속성을 정의 할 수 없습니다 '_getObservable', 라인 base.js : 객체가 파일 확장되지 않습니다 8652, 칼럼 : 여기에 17
은이다 ViewModel 인스턴스를 가져 와서 바인딩을 처리하는 내 home.js 파일의 코드 :
(function() {
"use strict";
var _viewModel;
WinJS.UI.Pages.define("/pages/home/home.html", {
// This function is called whenever a user navigates to this page. It
// populates the page elements with the app's data.
ready: function (element, options) {
// TODO: Initialize the page here.
_viewModel = ViewModels.ViewModelLocator.viewModelTest;
WinJS.Namespace.define("Application.Pages.Home", { "ViewModel": _viewModel });
WinJS.Binding.processAll(null, Application.Pages.Home.ViewModel);
}
});
})();
<section aria-label="Main content" role="main" data-win-bindsource="Application.Pages.Home">
<h2 data-win-bind="innerText: ViewModel.testString"></h2>
<h3>Test String Property: <span data-win-bind="innerText: testString"></span></h3>
<button id="changeTestStringButton">Change testString value</button>
</section>
답변 해 주셔서 감사합니다. 그것은 내가 얻는 일반적인 결론 인 것 같다. 우리는 래퍼를 생성하기 위해 mixin을 작성해야하거나 C# 컴포넌트에서 T4 템플릿 또는 빌드 태스크를 통해 JavaScript 래퍼 클래스를 생성해야합니다. 바라건대 Microsoft는이 시나리오를 WinJS에 대한 솔루션으로 작업하거나 WinJS.Contrib 프로젝트가 팝업되기를 바랍니다. –