2014-12-19 64 views
0

我有一個角模板,我想在兩個不同的控制器內重複使用模板。問題是兩個控制器都需要不同的ng型號名稱。如何在角度內別名模型

該模板包含HTML像下面,當NG模型引用的是「目標文件」的特性:需要

<input name="customer" ng-model="obj.customer" id="customer"> 

其中一個控制器的NG-型號名稱與「目標文件」相關聯。這意味着模板是完美的。

爲了簡單起見,其他控制器需要將ng模型與「obj1」相關聯。

有沒有辦法處理這種方式,我可以使用相同的HTML模板?爲了改變ng模型的名字,必須複製HTML似乎很遺憾。我嘗試使用ng-init,說obj = obj1,但這似乎不工作。

+0

這是指令幫助的地方。 – PSL

+0

@PSL你能詳細說明你的意思嗎? – inperspective

+0

使用2路綁定創建指令,因此,您可以根據需要將其綁定到任何模型,並且模板可以作爲組件重複使用。 – PSL

回答

1

至於什麼@PSL評論了關於...

指令在角允許模板和代碼進行整個應用程序的其他地方重新使用。你可以傳遞一個角度指令某種模型,它的行爲就像它自己的控制器和自己的範圍一樣,將它與其他應用程序隔離開來。例如,您希望獲得用戶及其信息的列表,您可以創建一個指令並將數據傳遞給它,以便對其執行操作。然後,您可以隨意多次重複該過程。

欲瞭解更多信息和示例,你可以看看Angular的寫在指令。 >> Directives guide

我還將提供一個簡短的例子下面的指令與客戶的問題.. >>plunkr example

.directive('myCustomer', ['$timeout', function($timeout) { 
return { 
    template: '<input name="customer" data-ng-model="customerInfo.name">', 
    replace: true, 
    scope: { 
    customerInfo: "=" 
    }, 
    controller: ['$scope', function($scope){ 
    $scope.init = function(){ 
     console.log("i'm alive!"); 
    } 
    }], 
    link: function(scope, element, attrs, transclute, requires){ 
    scope.init(); 
    } 
} 
}]) 

希望這有助於!

-mbp