0

我在 Windows 8 上的 Metro javascript 应用程序中遇到数据绑定问题。

在 *构建 xxxx *

我创造了我想绑定的价值

var someValue = WinJS.Binding.as({ primitive : 1 }); 

我实际上已经把它放在全局范围内以排除事情

然后只需设置一个简单的回调以每 5 秒更新一次此值

setInterval(function () { someValue. primitive++ }, 5000);
WinJS.Binding.processAll();

这是在页面js文件的ready函数中

然后在 HTML 文件中只是一个简单的 h1 标签

<h1 data-win-bind="innerText : someValue.primitive">Test</h1>

当此页面运行时,它最初会进行数据绑定 - 因此 h1 标记显示 1 但从不显示其他任何内容。回调确实受到打击,并且在任何时候我都可以检查 someValue 并且它看起来正确。我尝试在 someValue 对象上使用 setProperty 和 updateProperty ,但没有任何区别。

我会很感激任何建议。谢谢!

4

1 回答 1

0

这似乎是全局的问题。我尝试了其他一些方法,但您似乎无法将数据绑定到具有全局范围的对象。

<h1 data-win-bind="innerText : variable">Test</h1>

如果您要绑定的变量具有全局范围,则“变量”不能在全局范围内,它只是中断。

但是如果你只是命名空间是说 variable.variable 那么它可以工作 - 但是因为它已经被命名空间所以你必须将它作为数据上下文传递。

WinJS.Binding.processAll(document.body,变量)

我的问题是我有一个 ViewModel.Login、ViewModel.Basket 对象,我只想绑定 ViewModel,然后将相关部分绑定到他们需要的位。

// ViewModel.Test.test.guidePrice = "£3.00";

作品 <h1 data-win-bind="innerText : test.guidePrice">Test</h1> WinJS.Binding.processAll(document.getElementById('basketPrice'),ViewModel.Test);

不工作 <h1 data-win-bind="innerText : Test.test.guidePrice">Test</h1> WinJS.Binding.processAll(document.getElementById('basketPrice'),ViewModel);

希望这可以帮助任何有相同/相似问题的人!

于 2012-05-16T08:47:56.757 回答