如何使用"controller as"语法引用命名表单

cay*_*ood 23 javascript angularjs

在angularjs中使用"controller as"语法时,我在控制器中引用命名表单时遇到问题.例如,给定以下HTML:

<div ng-controller="MyController as ctl">
  <form role="form" name="newItemForm">
    <input type="text" id="firstName" ng-model="ctl.firstName"/>
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

在控制器的上下文中,

function MyController() {
  var self = this;
  console.log(self.newItemForm);
}
Run Code Online (Sandbox Code Playgroud)

self.newItemForm未定义.如果我一直在使用$ scope约定,我可以引用$ scope.newItemForm.有没有其他方法在控制器中执行此操作作为语法而不使用范围?

que*_*rin 44

将您的HTML更改为:

<div ng-controller="MyController as ctl">
  <form role="form" name="ctl.newItemForm">
    <input type="text" id="firstName" ng-model="ctl.firstName"/>
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

然后,您将能够在控制器中按预期访问命名表单而无需注入$scope.在此处找到此信息:http://www.technofattie.com/2014/07/01/using-angular-forms-with-controller-as-syntax.html