使用javascript将数据绑定到metro风格应用程序中的observable

时间:2012-05-15 14:34:45

标签: javascript windows-8 winjs

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

on * Build xxxx *

我创造了我想绑定到

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

我实际上把它放在全球范围内来排除事情

然后设置一个简单的回调来每5秒更新一次这个值

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

这是页面js文件的就绪功能

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

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

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

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

1 个答案:

答案 0 :(得分:0)

这似乎是全球性问题。我尝试了一些其他的东西,看起来你不能将数据绑定到具有全局范围的对象。

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

'变量'不能是全局的,如果你要绑定的变量具有全局范围,它就会中断。

但是如果你只是名称空间是变量。变量然后它可以工作 - 但因为它已被命名空间,你必须将其作为数据上下文传递。

WinJS.Binding.processAll(document.body,variable)

我的问题是我有一个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);

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