这听起来是一项非常简单的任务,我一直在努力做,这里就是......
我需要获取用户将在其文本中键入的输入框的值,然后将值传递给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);
};
}]);
请注意我在控制器中使用了各种依赖项,这些依赖项用于进一步完善所有功能。我尝试过的主要问题(以及其他各种问题)要么返回空白值,要么返回“未定义”消息。
谢谢,
答案 0 :(得分:1)
您的代码似乎遇到了许多不同的问题。
$firebaseArray
两次。updateUser
这是一个具有单个属性和的对象,您正在公开一个名为updateProfile
的函数。updateUser.updateProfile()
显然不起作用。 updateProfile
直接与您当前的代码一起生活在范围内。答案 1 :(得分:0)
属性
pattern
在此引发问题。删除pattern
即可。
除非提供的值与模式不匹配,否则不会更新模型值。
updateUser.newEmail
未在任何地方定义。如果您正在访问updateUser.email
,则您的模型名称应与该名称匹配..
updateUser"
对象没有方法updateProfile()"
,应该直接访问它。
试试这个:
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;
答案 2 :(得分:0)
是您想要获取id为newEmail的值的输入吗? 那么你只需要确保你有正确的ng-model是updateUser.newEmail
试试这个: console.log('用户点击注册',$ scope.updateUser.newEmail);