我似乎无法让数据绑定在我的 WinJS 视图代码和我的 Windows 运行时组件 ViewModel 代码之间工作。有什么建议或指向讨论这个问题的网站吗?
我来自 Xaml/C# 背景,但需要制作我的 UI(又名视图)HTML/WinJS。因此,我将 HTML/WinJS 视为类似于 Xaml + C#-Codebehind 的视图。但我希望其他所有内容都使用 C# 代码编写。因此,我从一个 Windows 运行时组件项目中创建我的 ViewModel,并在 WinJS 中设置一个局部变量来表示 ViewModel 的一个实例。但是,当我尝试绑定到 ViewModel 上的简单字符串属性时,我得到以下 javascript 异常:
异常即将被 JavaScript 库代码在 ms-appx://microsoft.winjs.1.0/js/base.js 0x800a13d5 中的第 8652 行第 17 列捕获 - JavaScript 运行时错误:无法定义属性“_getObservable”:对象不是可扩展文件:base.js,行:8652,列:17
这是我的 home.js 文件中获取 ViewModel 实例并处理绑定的代码:
(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);
}
});
})();
这是带有 data-win-bind 属性的简单 home.html 代码:
<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>