【问题标题】:WinJS Repeater and ms-grid: Add ms-grid-row value with JavaScriptWinJS 中继器和 ms-grid:使用 JavaScript 添加 ms-grid-row 值
【发布时间】:2014-04-09 17:49:14
【问题描述】:

我有一系列显示为-ms-grid 的 div。这些是使用WinJS.UI.Repeater 对象输出的。

我需要为当前迭代动态分配-ms-grid-row 值。

我该怎么做呢?

中继器

<div data-win-control="WinJS.UI.Repeater" data-win-options="{template: select('.template')}">
</div>

中继器模板

<div class="template" data-win-control="WinJS.Binding.Template">
    <div class="col1" style="-ms-grid-row:"></div>
    <div class="col2" style="-ms-grid-row:"></div>
    <div class="col3" style="-ms-grid-row:"></div>
    <div class="col4" style="-ms-grid-row:"></div>
</div>

CSS

.grid {
    display: -ms-grid;
    -ms-grid-columns: (1fr)[4];
    -ms-grid-rows: (auto)[1000];
}
.grid .col1 {
    -ms-grid-column: 1;
}
.grid .col2 {
    -ms-grid-column: 2;    
}
.grid .col3 {
    -ms-grid-column: 3;    
}
.grid .col4 {
    -ms-grid-column: 4;    
}

因为最多可以有 1000 行,所以我需要像这样内联分配样式:

渲染标记

<div class="col1" style="-ms-grid-row: 1">test</div>
<div class="col2" style="-ms-grid-row: 1">test</div>
<div class="col3" style="-ms-grid-row: 1">test</div>
<div class="col4" style="-ms-grid-row: 1">test</div>

<div class="col1" style="-ms-grid-row: 2">test</div>
<div class="col2" style="-ms-grid-row: 2">test</div>
<div class="col3" style="-ms-grid-row: 2">test</div>
<div class="col4" style="-ms-grid-row: 2">test</div>

但我不知道如何在中继器中执行此操作?

非常感谢

克里斯

【问题讨论】:

  • 您是否尝试过使用转换器功能?您可以将一个函数绑定到您的样式属性,该属性将返回您需要的值
  • 嗨,Maurizio,你有可以给我看的例子吗?非常感谢。
  • 在下面查看我的答案,让我知道您尝试了什么,以便我们更新答案以更准确。对不起,我没有机会用你的具体情况尝试一下

标签: microsoft-metro windows-8.1 winjs


【解决方案1】:

您可以尝试使用此处解释的转换器功能:

http://msdn.microsoft.com/en-us/library/windows/apps/br229809.aspx

例如,您可以将函数分配给跨度的颜色并在函数中计算该颜色:

<span id="loginName" 
    data-win-bind="innerText: name; style.color: userType LoginData.userTypeToColor">
</span>
...

WinJS.Binding.processAll(document.getElementById("loginDisplay"), LoginData.login);

WinJS.Namespace.define("LoginData", {
    //Data Object
    login : { name: "myname", id: "12345678", userType: "admin" },

    //Converter function
    userTypeToColor: WinJS.Binding.converter(function (type) {
        return type == "admin" ? "Green" : "Red";
    })
});

我没有使用-ms-grid-row 属性测试此代码,但值得一试。

【讨论】:

  • 感谢您的示例。我只是不确定如何将它与中继器一起使用?
  • 你能用你的中继器更新你的问题吗?你有一个 data-win-bind,不是吗?
  • 您好 Maurizio,感谢您一直以来的支持。我已经包含了中继器和模板。中继器工作得很好,我只是不知道如何以编程方式添加 -ms-grid-row: 值。
猜你喜欢
  • 2013-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 2012-03-25
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
相关资源
最近更新 更多