我在ListView的ItemTemplate中使用控件MicrosoftNSJS.Advertising.AdControl。 我想将一些数据绑定到以下data-win-options属性:ApplicationId和AdUnitId
源数据已正确设置并在我的项目模板中可见,我可以在内部文本属性上使用h2 +经典数据获胜绑定显示它们
如果我将静态ID直接放在html代码中,则广告会正确显示,但这些ID需要从配置文件中加载...
有可能吗?感谢
如果不可能,我可以直接修改JS代码中的项目模板,然后才能在listview中注入吗?
答案 0 :(得分: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>
答案 1 :(得分: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);
}
}
}
答案 2 :(得分: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>
工作正常。
答案 3 :(得分:0)
<div data-win-bind="this['data-list_item_index']:id WinJS.Binding.setAttribute" >