1

我在 ListView 的 ItemTemplate 中使用控件 MicrosoftNSJS.Advertising.AdControl。我想将一些数据绑定到以下 data-win-options 属性:ApplicationId 和 AdUnitId

源数据已正确设置并且在我的项目模板中可见,我可以在 innerText 属性上使用 h2 + 经典 data-win-bind 显示它们

如果我将静态 ID 直接放入 html 代码中,则广告会正确显示,但这些 ID 需要从配置文件中加载...

可能吗 ?谢谢

如果不行的话,我可以在注入listview之前直接修改JS代码中的item模板吗?

4

4 回答 4

3

来看看这是可能的(我试图做类似的事情)

控件属性的语法必须以 winControl 为前缀。

示例(我在此处设置应用程序 ID,但绑定了 html 元素的 className 和广告控件的 adUnitId)

<div id="adItemTemplate" data-win-control="WinJS.Binding.Template">
    <div data-win-bind="className:css; winControl.adUnitId: adUnitId"
        data-win-control="MicrosoftNSJS.Advertising.AdControl"
        data-win-options="{ applicationId: 'd25517cb-12d4-4699-8bdc-52040c712cab'}">
    </div>
</div>
于 2013-05-12T20:18:02.253 回答
1

我终于找到了一种无需真正绑定即可执行此操作的方法,方法是使用 itemTemplateSelector 函数,如下所示:

function itemTemplateSelector(itemPromise) 
{
   return itemPromise.then(function (item) 
   { 
    if (item.type == "ad")
    {
        var template = _$(".adTemplate").winControl.render(item, null);

        // Access to the AdControl through the DOM
        var adControl = template._value.childNodes[1].childNodes[1].winControl;

        // Set options that are specified in the item
        WinJS.UI.setOptions(adControl, { applicationId: item.AdAppId, adUnitId: item.AdUnitId });

        return template;
    }
    else
    {
        return _$(".itemTemplate").winControl.render(item, null);
    }
   }
}
于 2013-05-06T09:32:47.857 回答
1

我在评分中遇到了这个问题:

 <div data-win-control="WinJS.UI.Rating" data-win-options="{averageRating: 3.4, onchange: basics.changeRating}"></div>

我通过winControl绑定它:

 <div data-win-control="WinJS.UI.Rating" data-win-bind="winControl.averageRating: myrating" data-win-options="{onchange: basics.changeRating}"></div>

它工作得很好。

于 2015-01-22T14:07:21.683 回答
0
<div data-win-bind="this['data-list_item_index']:id WinJS.Binding.setAttribute" >
于 2015-05-20T11:49:31.543 回答