当我使用某个值初始化 $ scope.s 时,它正常工作。 但是当它没有按照下面所示的任何值进行初始化时,它会在控制台中产生错误 使用按钮
单击事件绑定时, $ scope.s undefined var mainApp = angular.module('mainApp', ['ngRoute']);
mainApp.controller('homeCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.title = 'Home page';
$scope.s = '';
$scope.m = '';
$scope.subscribe = function () {
console.log($scope.s); // undefined
}
}]);
<div data-ng-app="mainApp" data-ng-controller="homeCtrl">
<div>
<h1>{{title}}</h1>
</div>
<div>
<h3>Want to become a seller and earn more..?</h3>
<p>Add your email and we will get in touch.</p>
<div>
<input type="email" data-ng-model="s" id="txtEmail" />
</div>
<div>
<div>
<button data-ng-click="subscribe();">Send</button>
</div>
</div>
</div>
<div>
{{m}}
</div>
答案 0 :(得分:3)
$scope.s
变量未定义,因为您使用的是email
类型的输入,其值为无效的电子邮件。
此“功能”似乎没有很好地记录,但input[email]
的angular文档中的示例清楚地显示了相同的行为:input[email] @ docs.angularjs.org;在他们的示例中尝试有效且无效的电子邮件地址,您会看到与您目睹的行为相同的行为。
所以你的选择是:切换到text
类型的输入或计划你的模型未定义,除非电子邮件有效。
这是angularjs的github中的问题,可以追溯到2012年,但行为相同: