1
我有大約10個組件,它們都具有相同的綁定,並且大多是相同的控制器。每個組件中唯一不同的是templateUrl,並且可能是控制器的一小部分。有沒有辦法在角度組件之間共享配置數據?
由於Angular組件需要一個配置對象而不是工廠函數,這是否意味着我只需要在我的10個組件中使用一堆複製/粘貼?
我知道我可以共享配置,如果我將它們更改爲指令,但我希望將它們保存爲(未來友好的)組件。
我有大約10個組件,它們都具有相同的綁定,並且大多是相同的控制器。每個組件中唯一不同的是templateUrl,並且可能是控制器的一小部分。有沒有辦法在角度組件之間共享配置數據?
由於Angular組件需要一個配置對象而不是工廠函數,這是否意味着我只需要在我的10個組件中使用一堆複製/粘貼?
我知道我可以共享配置,如果我將它們更改爲指令,但我希望將它們保存爲(未來友好的)組件。
您可以使用常見的配置對象,並使用自定義屬性,如果它需要擴展它來:
var getConfig = function() {
return {
controller: function() { console.log('default controller'); },
templateUrl: 'default.html',
bindings: { }
}
}
// default component
app.component('one', getConfig())
// different templateUrl
app.component('two', angular.extend(getConfig(), {
templateUrl: 'another.html'
}))
// different controller
app.component('three', angular.extend(getConfig(), {
controller: function() { console.log('another controller'); }
}))
// ... and even extend controller itself
app.component('four', angular.extend(getConfig(), {
controller: function() {
// inherit default controller
getConfig().controller.call(this)
// and add custom functionality
this.newMethod = function() {}
}
}))
如果我這樣做,我將能夠使用依賴注入與原有/基控制器? – Troy
當然可以。 – dfsq
感謝您的詳細示例。在例4中,'config.controller.call(this)'這一行給了我無限遞歸。我想它在基礎配置(?)中需要一個不同的名稱但是那樣會破壞示例1和2 ... – Troy