@ericdes關於您的最新評論我認爲這將是最好的選擇。假設你有第N個WinJS控件
請考慮下面的代碼。我爲options
中的averageRating
屬性指定了不同的值。
<winjs-control [options]="{averageRating: '1.5', someMoreOptions : 'x'}"></winjs-control>
<winjs-control [options]="{averageRating: '1.4', differentOptionsForThisOne :'Z'}"></winjs-control>
<winjs-control [options]="{averageRating: '1.3'}"></winjs-control>
<winjs-control [options]="{averageRating: '1.2'}"></winjs-control>
<winjs-control [options]="{averageRating: '1.1'}"></winjs-control>
// more and more...
該組件將讀取此options
屬性並將其傳遞給視圖。忘記指令,畢竟沒有必要。 我們通過attr.data-win-options
傳遞選項,因爲它不是div的屬性,而是屬性。
@Component({
selector : 'winjs-control',
properties : ['options']
})
@View({
template : `<div data-win-control="WinJS.UI.Rating" [attr.data-win-options]="jsonRating"></div>`,
})
class WinJSComponent implements OnInit, AfterViewInit {
constructor() {}
// We specify onInit so we make sure 'options' exist, at constructor time it would be undefined
// And we stringify it or otherwise it will pass an object, we need to convert it to a string
onInit() {
this.jsonRating = JSON.stringify(this.options);
}
// We process WinJS after view has been initialized
// this is necessary or 'data-win-options' won't be fully processed
// and it will fail silently...
afterViewInit() {
WinJS.UI.processAll();
}
}
這是plnkr for this case。
這是一個選項和恕我直言,我認爲這是最容易的一個。另一個擁有相同的HTML內容的人會將父母與子女溝通,而我沒有用這種方法測試你的案例。
試試這個plnkr:http://plnkr.co/edit/aTd2x8?p=preview –
我知道你創建了一個類來爲'div'標籤添加'dataWinOptions'屬性。但是我想使用幾個WinJS控件,它們都通過相同的'data-win-options'屬性使用不同的配置模型。 – ericdes
E.g.如果我還想在Angular2中爲其他WinJS控件配置'data-win-options',會發生什麼? '
' – ericdes