从输入中获取值以在控制器Angular JS中使用

时间:2016-02-29 10:20:07

标签: javascript jquery angularjs firebase

这听起来是一项非常简单的任务,我一直在努力做,这里就是......

我需要获取用户将在其文本中键入的输入框的值,然后将值传递给Angular JS中的控制器。按下按钮后,该值将传递给控制器​​,然后我可以在我的代码中使用此值,即简单的控制台或警报以验证它是否正常工作。

但是,我尝试了各种不起作用的解决方案。请在下面输入代码段:

HTML

<label for="newEmail" class="sr-only">New email address</label>
<input data-ng-model="updateUser.newEmail" type="text" id="newEmail"
maxlength="254" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" size="20"
class="form-control" placeholder="{{user.email}}">

<button type="button" class="btn btn-primary btn-md" 
data-ng-click="updateUser.updateProfile()" style="margin: 
3px">Update</button>

JS

app.controller('adminCtrl', ['$scope', 'Auth', '$state', '$firebaseArray', 
'$timeout', '$firebaseArray', function($scope, Auth, $state, $firebaseArray, 
$timeout) {

$scope.updateUser = {
    email: ''
};

$scope.updateProfile = function () {
    console.log('User clicked register', $scope.updateUser.email);
};

}]);

请注意我在控制器中使用了各种依赖项,这些依赖项用于进一步完善所有功能。我尝试过的主要问题(以及其他各种问题)要么返回空白值,要么返回“未定义”消息。

谢谢,

3 个答案:

答案 0 :(得分:1)

您的代码似乎遇到了许多不同的问题。

  1. 在您的控制器定义中,您已指定$firebaseArray两次。
  2. 您想在控制器上公开哪些变量?目前,您正在公开updateUser这是一个具有单个属性的对象,您正在公开一个名为updateProfile的函数。
  3. 在您的HTML中,您访问的updateUser.updateProfile()显然不起作用。 updateProfile直接与您当前的代码一起生活在范围内。

答案 1 :(得分:0)

  

属性pattern在此引发问题。删除pattern即可。

除非提供的值与模式不匹配,否则不会更新模型值。

updateUser.newEmail未在任何地方定义。如果您正在访问updateUser.email,则您的模型名称应与该名称匹配..

updateUser"对象没有方法updateProfile()",应该直接访问它。

试试这个:

&#13;
&#13;
var saApp = angular.module("saApp", []);
saApp.controller('numberController', function($scope) {
  $scope.updateUser = {
    email: ''
  };
  $scope.updateProfile = function() {
    console.log('User clicked register', $scope.updateUser.email);
  };
});
&#13;
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="saApp" ng-controller="numberController">
  <label for="newEmail" class="sr-only">New email address</label>
  <input ng-model="updateUser.email" type="text" id="newEmail" maxlength="254" size="20" class="form-control"> 
  {{updateUser.email}}
  <button type="button" class="btn btn-primary btn-md" ng-click="updateProfile()" style="margin: 
3px">Update</button>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

是您想要获取id为newEmail的值的输入吗? 那么你只需要确保你有正确的ng-model是updateUser.newEmail

试试这个: console.log('用户点击注册',$ scope.updateUser.newEmail);