2017-04-10 51 views
0

我有一個名爲homeInside的狀態,它的控制器和模板在我的angularjs應用程序中(我正在使用路由)。有很多元素,也有一個按鈕,點擊ng鏈接到doSomething。我有另一個國家首頁外部。這完全類似於第一個,但doSomething做了另一個任務。Angularjs控制器和模板封裝vs角度組件

我不想複製任何東西。我怎樣才能用一個控制器和模板做到這一點?這是Angular2組件爲這種情況(與它的構造函數)發揮作用嗎?

任何想法將不勝感激。

編輯:

在第一狀態中:

$scope.doSomething = function() { 
    AuthService.logout(); 
} 

在第二個:

$scope.doSomething = function() { 
    $state.go('dashboard'); 
} 

所有其它部分的是完全一樣的。

+0

你能告訴我們你合作德?你想要關於AngularJS或Angular2的答案嗎? –

+0

聽起來像一個指令,得到一個函數注入 – Raulucco

+0

@Raulucco是的,但我們不確定,對不對?我們需要一個snnipet。 –

回答

1

我建議創建一個自定義指令和功能通過爲DoSomething的

在創建您使用「&」符號設置功能指令參數

這裏的指令是一個很好的例子解釋使用 https://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-3-isolate-scope-and-function-parameters

請參閱部分,其中「加」是正在傳遞的功能

+0

看起來'指令'是唯一的方法。但仍需要複製模板。不管怎樣,謝謝。 –

+0

不要複製模板使用transaclude,因此您可以注入模板的變化部分並封裝模板的常見事物 – Raulucco

0

在Angular v1.x中您必須製造工廠並將其注入到您想要製作相同內容的控制器中。 如果你需要工廠的例子,我把它給你。

+0

謝謝。但我認爲這不涉及工廠或服務。請參閱編輯部分。 –