2016-08-02 2 views
0

У меня есть страница html с текстовым полем ввода, и этот входной текст контролируется флажком. Когда флажок установлен в false, он появляется, и когда флажок установлен, текст ввода отображается сам. Это очень хорошо работает, но когда я пытаюсь получить значение, которое пользователь помещает в это поле, контроллер JS не может его получить.Невозможно получить значение из файла html с помощью контроллера Angularjs

Я использовал этот код:

<div class="form-group"> 
    <label> 
     <input 
     type="checkbox" 
     ng-model="checkedSubject" 
    > 
<img src="../../innerPages/gmailChannel/email-text-search.png" height="30" width="30"/> Email content query: 
</label><br/> 
    <textarea 
     class="form-control animate-if" 
     ng-if="checkedSubject" 
     rows="5" id="subjectReceive" placeholder="Insert here some text to filter the emails" 
     ng-model="gmailinput.subjectReceive" name="subjectReceive" ng-disabled="!checkedSubject" 
     maxlength="100%" ng-trim="false" 
    ></textarea> 
    <span>{{500 - gmailinput.subjectReceive.length}} left </span></div> 

Я использовал этот код, чтобы передать переменные

<div> 
    <a type="submit" class="btn btn-danger pull-left" href="#allTriggers" >Cancel</a> 
    <a href="#createRecipeAction" ng-disabled="!checkedSubject" type="submit" 
     class="btn btn-primary pull-right btn_next3" ng-click="triggerGmail(gmailinput)" >Next</a> 
</div> 

Это мой контроллер:

ftttApp.controller('GmailTriggerController', ['$scope', '$rootScope', '$routeParams', '$http', '$location', 
function ($scope, $rootscope, $routeParams, $http, $resource, $location) { 
    $scope.triggerGmail = function(user) 
    { 

     alert(user.subjectReceive); 
     }; 
}]); 

Моя цель состоит в том, чтобы напечатать , но я не могу этого сделать.

Я благодарю вас за помощь.

+0

Ваша ng-модель - 'gmailinput.subjectReceive'. Поэтому ваше предупреждение должно быть «alert» ($ scope.gmailinput.subjectReceive); '. –

+0

Это не работает. Я изменил свое предупреждение и консоль моего браузера сказал: «Ошибка: undefined не является объектом (оценка« $ scope.gmailinput.subjectReceive »)» – snorlax

ответ

0

Если вы посмотрите на свою консоль разработчика в своем веб-браузере, она покажет вам, что она не может читать «subjectReceive» неопределенного.

Итак, вам нужно инициализировать переменную gmailinput в контроллере, потому что вы используете ее как объект.

ftttApp.controller('GmailTriggerController', ['$scope', '$rootScope', '$routeParams', '$http', '$location', 
function ($scope, $rootscope, $routeParams, $http, $resource, $location) { 
$scope.gmailinput = []; 
    $scope.triggerGmail = function(user) 
    { 

     alert(user.subjectReceive); 
     }; 
}]); 

В зависимости от того, что вы пытаетесь выполнить, вы также можете сделать то, что предложил @BrianRay. И удалите пользователя из параметров и вместо этого используйте объект $ scope.gmailinput. Поскольку у вас есть gmailinput в области, вам не нужно передавать ее.

Вам все равно необходимо инициализировать объект.