AngularJS Controller「as」語法存在問題。我正在嘗試使用引導程序nanomodals並將其附加到控制器$ scope。在AngularJS中使用「Controller as something」
現在,我爲我的模態創建角度分量。我也用html創建了我的對話框。
我的html代碼:
<body ng-app="application">
<div ng-controller="accountController as $acc" class="controller-account">
<script type="text/ng-template" id="loginModal.html">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Nowe konto</h4>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="userNameInput">Nazwa użytkownika:</label>
<input type="text" class="form-control" id="userNameInput" placeholder="Wprowadź nazwę użytkownika">
</div>
<div class="form-group">
<label for="userPasswordInput">Hasło:</label>
<input type="password" class="form-control" id="userPasswordInput" placeholder="Password">
</div>
<div class="form-group">
<label for="userEmailInput">E-Mail:</label>
<input type="email" class="form-control" id="userEmailInput" placeholder="Wprowadź E-mail">
</div>
<button ng-click="$acc.okButton()" class="btn btn-primary">Załóż konto</button>
</form>
</div>
</script>
我的JS腳本:
var angularApp = angular.module('application', ['ngAnimate', 'ngSanitize', 'ngCookies', 'ui.bootstrap']);
angularApp.component('loginModalComponent', {
templateUrl: 'loginModal.html',
bindings: {
resolve: '<',
close: '&',
dismiss: '&'
},
controller:() => {
var $acc = this;
$acc.$onInit =() => {
};
$acc.okButton =() => {
console.log('Liiiii');
//HTTP request about login
};
$acc.closeButton =() => {
$acc.close();
}
}
});
angularApp.controller('accountController', ['$scope', '$http', '$cookies', '$uibModal',
function($scope, $http, $cookies, $uibModal){
var $acc = this;
$acc.isUserSignIn = false;
$acc.loginModalOpen =() => {
var modalInstance = $uibModal.open({
animation: true,
component: 'loginModalComponent',
resolve: {
}
});
};
}]);
我不知道爲什麼,但我不能在這個例子$ acc.okButton()函數中使用。
我用this和this來解決這個問題,但我不能這樣做。這裏有些不好,但我不知道是什麼。
被認爲是該組件本身的代碼的HTML代碼,或者你試圖使用有分量的? –
我想和[鏈接] https://plnkr.co/edit/mKrqmV35ary96rItbw6N?p=preview一樣,但我不得不錯過一些東西。 這個html是我的家。在腳本標籤中的ng控制器中,我得到了我的模態模板,它由組件使用。點擊某個按鈕後會出現對話框,但我無法調用任何$ acc功能。 –
這並不能真正回答我的任何問題,但基本上,不要將控制器與組件混合使用。組件已經指定了它的控制器。您需要將模板分成自己的html頁面,然後使用 login-modal-component>將您的控制器包含在您的頁面中您想要的位置。組件基本上是簡化的指令。 –