我可以将数据绑定到data-win-options吗?

时间:2013-05-06 08:13:12

标签: windows-8 windows-runtime microsoft-metro winjs

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

源数据已正确设置并在我的项目模板中可见,我可以在内部文本属性上使用h2 +经典数据获胜绑定显示它们

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

有可能吗?感谢

如果不可能,我可以直接修改JS代码中的项目模板,然后才能在listview中注入吗?

4 个答案:

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