Привет, ребята, я пытаюсь получить некоторый ввод из текстового поля, используя угловое ng-bind и получить доступ к нему в контроллере. В настоящее время, когда я пытаюсь распечатать его, я получаю undefined. Понравилась бы какая-то помощь, и я уверен, что я что-то упустил из своей настройки.
Это мой HTML
<div class="text-center rounded-box" ng-app="AuthorisationTicketApp" ng-controller="LookupTicketController">
<form>
<b>Please insert text:</b>
<input type="text" name="text" ng-bind="text" />
</form>
<div class="lg-margin-top">
<a href="#lookup-ticket" class="btn btn-lg btn-primary">Submit</a>
</div>
Мой контроллер
authorisationTicketApp.controller('LookupTicketController', ['$scope',
function($scope) {
console.log('LookupTicketController .... called');
console.log('text' + $scope.text);
console.log('$scope ' + $scope);
}]);
Мой app.js
var authorisationTicketApp = angular.module('AuthorisationTicketApp', ['ngRoute']);
authorisationTicketApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/input-text', {
templateUrl: contextPath + 'partials/input-text.html',
controller: 'LookupTicketController'
}).
when('/lookup-ticket', {
templateUrl: contextPath + 'partials/lookup-ticket.html',
controller: 'LookupTicketController'
}).
otherwise({
redirectTo: '/'
});
}]);
Мой консольный выход
LookupTicketController .... called controllers.js:11:1
$ text undefined controllers.js:13:1
$scope [object Object]
Используйте ng-model
для вашего тега ввода вместо ng-bind
. Это будет двустороннее связывание с значением в контроллере:
<input type="text" name="text" ng-model="text" />
Это из документации:
Используйте контроллеры для: * Настройка начального состояния объекта $ scope.
Не используйте его для регистрации. Он должен содержать только бизнес-логику. Постройте его:
authorisationTicketApp.controller('LookupTicketController', ['$scope',
function($scope) {
$scope.text = "test";
console.log('LookupTicketController .... called');
}]);
Тогда это должно сработать.
Весь ваш код контроллера является кодом конструктора, а свойство text не существует во время построения. Вам понадобится метод, который вы вызываете в другом месте после построения, который вы можете создать с помощью $ scope.myMethod = function() {...}, и вы должны иметь возможность ссылаться на $ scope.text изнутри. Это также хорошая практика, чтобы инициализировать свойство text с помощью $ scope.text = '' в вашем конструкторе.
Это сработало для меня. Пожалуйста, посмотрите, используя ng-model
<ion-modal-view>
<ion-content>
<input class="form-input" type="text" ng-model="test.relation"/>
<button class="button button-bar button-positive" ng-click="answer()">Click Me</button>
</ion-content>
</ion-modal-view>
В своем контроллере обновите свой код следующим образом:
$scope.test = {};
$scope.answer = function(){
console.log($scope.test.relation);
}
Ответьте, если у вас есть какие-либо вопросы.