我最近开始使用HTML / CSS / JS开发Win8应用程序。 2周后,出现了关于与WinJS进行数据绑定的问题:
是否可以通过WinJS执行数据绑定,如同强大的数据绑定一样。 knockout.js(WinJS可以做所有淘汰赛的事情吗?)
如果是这样,我将如何使用WinJS从淘汰赛中执行ko.applyBindings()
?
答案 0 :(得分:1)
虽然“强大”非常主观,但WinJS有一个非常capable binding的引擎。它不一样,但与Knockout共享一些特征。它在某些方面与以前称为Microsoft ASP.NET Ajax Library的内容共享一些细节。
以下是他们的一个例子:
<div id="boundDiv" data-win-bind="innerText: age"></div>
<script type="text/javascript">
var person = { age: 0 };
var span = document.getElementById("boundSpan");
WinJS.Binding.processAll(span, person);
var bindingPerson = WinJS.Binding.as(person);
setInterval(function () {
changeAge(bindingPerson);
}, 500);
function changeAge(p) {
p.age++;
};
</script>
每500毫秒,div
将更新以反映age
的新person
。由于它利用了ECMAScript 5的Object属性getter和setter,因此可以轻松跟踪age的值,然后在div
中更新。
答案 1 :(得分:1)
在以下帖子中有两种方法的完整示例:
http://www.progware.org/Blog/post/Data-binding-in-Windows-8-Apps-with-Knockout.aspx http://www.progware.org/Blog/post/Data-binding-in-Windows-81-Apps-with-WinJS.aspx
两种方法都应用于同一个ViewModel,并且所有内容都被支持(双向绑定,转换器等)。
答案 2 :(得分:0)
WinJS中遗漏的一件事是双向数据绑定。因此,您必须编写一些代码以将ui中的用户输入返回到视图模型中。
因此,您可以为SDK Sample中的控件实现更改处理程序,也可以使用expression blend blog
中更通用的解决方案