我正在使用Ionic
编写HTML网络应用。在尝试将input
元素绑定到$scope
var时,我未定义。
SignupCtrl.js:
angular.module('SUSU.controllers', [])
.controller('SignupCtrl',
function ($scope) {
/* Form entries */
$scope.signupForm = {
email: "",
emailConfirm: ""
};
});
signup.html:
<label class="item item-input">
<input type="email" placeholder="Email" ng-model="signupForm.email">
</label>
app.js:
angular.module('SUSU', ['ionic','SUSU.controllers'])
.config(function ($stateProvider, $urlRouterProvider) {
// Set and define states
$stateProvider
....
.state('tabs.signup', {
url: '/signup',
views: {
'login-tab': {
templateUrl: 'templates/signup.html',
controller: 'SignupCtrl'
}
}
});
调试时我注意到在将文本插入电子邮件输入后未定义signupForm.email
的值。我如何绑定这两个以及我做错了什么?
答案 0 :(得分:1)
伙计们我不敢相信我浪费了那么多时间......
引起问题的是type="email"
。由于某种原因它不起作用。当我将其更改为type="text"
时,它的工作流畅。
答案 1 :(得分:0)
可能有更好的方法可以做到这一点,但实现目标的一种方法是执行以下操作:
在您的signup.html中添加ng-change到您的输入:
<label class="item item-input">
<input type="email" placeholder="Email" ng-model="signupFormEmail" ng-change="updateEmail(signupFormEmail)">
</label>
然后在你的控制器中添加一个方法到$ scope,它将更新你的signupForm电子邮件属性:
$scope.updateEmail = function(email){
$scope.signupForm.email = email;
}