如何在Angular中使用Alias模型

时间:2014-12-19 21:30:12

标签: javascript angularjs

我有一个角度模板,我想在两个不同的控制器中重用模板。问题是两个控制器都需要不同的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,但这似乎不起作用。

1 个答案:

答案 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