angularjs
2017-07-20 27 views 0 likes 
0

我有控制器衝突。我有簡單的形式如何在同一個html文件中使用2個名字的控制器?

<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

我不明白你想達到什麼。你在同一頁面上需要兩次控制器嗎? –

+0

我不知道如何使用它。因爲我有controllerAs:'singUpController'和'SingUpController as form'。還有controllerAs:'singUpController',當我將數據發送到組件時使用,還需要從輸入到模型的數據。 –

+0

使用相同的控制器,您的頁面內是否有2個不同的組件?或者只是一個具有控制器的組件? –

回答

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> 
+0

謝謝你的回答。 –

0

使用兩個名稱相同模板中的相同控制器沒有意義。

如果你已經在你的控制器user屬性,你可以用它作爲輸入的模型:

<input type="text" ng-model="singUpController.user.lastName"> 

如果你想訪問控制器或其他地方的輸入字段中輸入您模板(例如,用於驗證數據),您應該將name="lastName"添加到輸入標記。之後,您可以從控制器訪問其值:$scope.regForm.lastName或從模板:regForm.lastName

如果你不想使用$scope,然後就在控制器綁定一次:

`this.regForm = $scope.regForm` 

,然後使用this.regForm

+0

謝謝你的回答。 –

相關問題