我有一个角度模板,我想在两个不同的控制器中重用模板。问题是两个控制器都需要不同的ng-model名称。
模板包含如下HTML,其中ng-model引用是" obj"的属性:
<input name="customer" ng-model="obj.customer" id="customer">
其中一个控制器需要将ng-model名称与&#34; obj&#34;相关联。这意味着模板是完美的。
为了简单起见,另一个控制器需要与ng模型相关联,并且#b; obj1&#34;。
有没有办法以这种方式处理这个问题,我可以使用相同的HTML模板?仅仅为了更改ng-model名称而必须复制HTML似乎是一种耻辱。我尝试使用ng-init,说obj = obj1,但这似乎不起作用。
答案 0 :(得分:1)
与@PSL评论的内容一样......
Angular中的指令允许在整个应用程序的其他地方重用模板和代码。你可以传递一个角度指令某种模型,它表现为它自己的控制器和自己的范围,将它与你应用程序的其余部分隔离开来。
例如,您希望获得用户列表及其信息,您可以创建一个指令并将其传递给要处理的数据。然后你可以根据自己的喜好重复这个过程。
有关更多信息和示例,您可以查看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