使用WinJS进行数据绑定与强力淘汰一样强大?

时间:2013-10-27 16:39:44

标签: javascript windows-8 winjs

我最近开始使用HTML / CSS / JS开发Win8应用程序。 2周后,出现了关于与WinJS进行数据绑定的问题:

是否可以通过WinJS执行数据绑定,如同强大的数据绑定一样。 knockout.js(WinJS可以做所有淘汰赛的事情吗?)

如果是这样,我将如何使用WinJS从淘汰赛中执行ko.applyBindings()

3 个答案:

答案 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

中更通用的解决方案