我有控制器冲突。我有简单的表格
<form name='regForm' ng-controller="SingUpController as form">
<input type="text" class="form-control"
ng-model="form.user.lastName">
<favorite-dish favor-dish='singUpController.favoriteDish'></favorite-
</form>
和我的路由器
.state('public.signUp', {
url: '/sing-up',
templateUrl: 'src/public/sing-up/sing-up.html',
controller: 'SingUpController',
controllerAs: 'singUpController',
resolve: {
favDish: ['MenuService', function (MenuService) {
return MenuService.getCategories();
}]
}
});
如何将SingUpController
用于名称:
form
”来自“ng-controller
=”SingUpController as form
“”singUpController
”来自组件答案 0 :(得分:1)
您需要更改为
.state('public.signUp', {
url: '/sing-up',
templateUrl: 'src/public/sing-up/sing-up.html',
controller: 'SingUpController',
controllerAs: 'form',
resolve: {
favDish: ['MenuService', function (MenuService) {
return MenuService.getCategories();
}]
}
});
您的控制器必须是:
.controller("SingUpController",function(){
var self= this;
self.user = {};
});
你的html必须是:
<form name='regForm' ng-controller="SingUpController as form">
<input type="text" class="form-control"
ng-model="form.user.lastName">
<favorite-dish favor-dish='form.favoriteDish'></favorite-
</form>
答案 1 :(得分:0)
在同一个模板中为同一个控制器使用两个名称是没有意义的。
如果您的控制器中已经有user
属性,则可以将其用作输入的模型:
<input type="text" ng-model="singUpController.user.lastName">
如果要访问控制器或模板其他位置的输入字段(例如,用于验证数据),则应将name="lastName"
添加到输入标记。之后,您可以从控制器$scope.regForm.lastName
或模板:regForm.lastName
访问其值。
如果您不想使用$scope
,那么只需在控制器中绑定一次:
`this.regForm = $scope.regForm`
然后使用this.regForm
。