Angularjs 控制器中未定义ng模型
我使用的是爱奥尼亚,我有以下观点:Angularjs 控制器中未定义ng模型,angularjs,ionic-framework,ionic,Angularjs,Ionic Framework,Ionic,我使用的是爱奥尼亚,我有以下观点: <ion-view hide-nav-bar="true" ng-controller="loginController" class="login-view"> <ion-content class="padding"> <div class="row row-center"> <div class="col"> <div id="logo"></d
<ion-view hide-nav-bar="true" ng-controller="loginController" class="login-view">
<ion-content class="padding">
<div class="row row-center">
<div class="col">
<div id="logo"></div>
<form>
<div class="list">
<label class="item item-input">
<input type="text" placeholder="Membership No" ng-model="membershipNo">
</label>
<label class="item item-input">
<input type="password" placeholder="Password" ng-model="password">
</label>
</div>
<button class="button button-block button-positive button-login" ng-click="login()">
Login
</button>
</form>
</div>
</div>
</ion-content>
</ion-view>
我不明白的是,当我点击按钮时,登录函数被正确调用。另外,如果在控制器中,我将$scope.membershipNo
设置为类似“香蕉煎饼”的值,则视图实际上会更新
然而,当登录函数实际运行时,is说membershipNo和password是未定义的。我对Angular和Ionic比较陌生,所以我知道这可能是n00b的错误…您需要在控制器中定义$scope变量,如下所示:
app.controller('loginController', ['$scope', '$localstorage',
function($scope, $localstorage) {
$scope.membershipNo;
$scope.password;
$scope.login = function () {
console.log("User logged in with membership no: " + $scope.membershipNo +
"\n and password: " + $scope.password);
}
}
]);
$scope.membershipNo = '';
$scope.password = '';
app.controller('loginController', ['$scope',
function($scope) {
$scope.data={};
$scope.login = function () {
console.log("User logged in with membership no: " + $scope.data.membershipNo +
"\n and password: " + $scope.data.password);
}
}]);
因此,您的控制器看起来像:
app.controller('loginController', ['$scope', '$localstorage',
function($scope, $localstorage) {
$scope.membershipNo = '';
$scope.password = '';
$scope.login = function () {
console.log("User logged in with membership no: " + $scope.membershipNo +
"\n and password: " + $scope.password);
}
}]);
我最近遇到了完全相同的问题,这可能是一个解决方案: 修改后的报价: “如果您使用ng模型,则必须在其中有一个点。”
使您的模型指向
对象.property
即可
控制器
$scope.formData = {};
$scope.login = function () {
console.log("User logged in with membership no: " + $scope.formData.membershipNo +
"\n and password: " + $scope.formData.password);
}
模板
<input type="text" placeholder="Membership No" ng-model="formData.membershipNo">
<input type="password" placeholder="Password" ng-model="formData.password">
请检查此代码这是为我工作的:
登录
var-app=angular.module(“app”,[]);
app.controller('loginController',['$scope',
函数($scope,$localstorage){
$scope.membershipNo;
$scope.password;
$scope.login=函数(){
警报(“用户登录时的成员编号:+($scope.membershipNo | |“”)+
“\n和密码:”+($scope.password | |“”);
}
}]);
您正在绑定到一个基元。不要那样做。(本质上,membershipNo
的值是通过值传递的,因此所更改的不是控制器中的引用。创建一个对象,类似于$scope.user={}
并传递该ng model=“user.membershipNo”
,否则Angular无法将数据发送回控制器…)可能是@DRobinson所说的重复。您可以通过使用controllerAs语法来避免这种情况,同时使您的代码更加优雅,并在这个过程中经得起未来的考验:-)@Rahil只有在ngController
和ngModel
之间没有创建新作用域时才有效。这是非常糟糕的做法。每次你都想在你的ngModel
中加入“点”。总是。(它对Dean也不起作用,因为ionContent创建了一个示波器。)我小时候曾拥有一个电视示波器,但它从来都看不到很远。虽然站在我的房间里看起来很酷。我试过了,然后函数打印出的只是空白值,而不是用户输入的内容…?虽然这可以解决问题,但它并没有真正提供一个问题的答案。就像@DRobinson所说的和上面的示例所示,我获取了membershipNo和password并将它们包装在一个“credentials”对象中,现在一切都神奇地工作了。。但是为什么!?您能否添加一个解释,帮助“询问者”了解您所做的事情以及原因?这样我们都可以从ITI Ry8806中学习,这是一个典型的继承概念。正如@mbajur在他的例子中通过制作对象来制作的那样。angularjs使用的是javascript中的模式。如果代码中使用的继承人体系结构(如子作用域和父作用域之间的关系)得到了正确维护,那么这方面应该没有问题。否则,您将在angularjs中遇到这些类型的问题,即丢失范围属性值。但如果你能看到,我只是做了一个简单的控制器,那么它的工作正常。我不知道jean到底想做什么。但在他添加的代码片段中并没有问题。
app.controller('loginController', ['$scope',
function($scope) {
$scope.data={};
$scope.login = function () {
console.log("User logged in with membership no: " + $scope.data.membershipNo +
"\n and password: " + $scope.data.password);
}
}]);
<ion-view ng-app="app" hide-nav-bar="true" ng-controller="loginController" class="login-view">
<ion-content class="padding">
<div class="row row-center">
<div class="col">
<div id="logo"></div>
<form>
<div class="list">
<label class="item item-input">
<input type="text" placeholder="Membership No" ng-model="membershipNo">
</label>
<label class="item item-input">
<input type="password" placeholder="Password" ng-model="password">
</label>
</div>
<button class="button button-block button-positive button-login" ng-click="login()">
Login
</button>
</form>
</div>
</div>
</ion-content>
</ion-view>
var app= angular.module("app",[]);
app.controller('loginController', ['$scope',
function($scope, $localstorage) {
$scope.membershipNo;
$scope.password;
$scope.login = function () {
alert("User logged in with membership no: " + ($scope.membershipNo || '') +
"\n and password: " + ($scope.password || ''));
}
}]);
$scope.user = {};
$scope.submitForm = function (isValid) {
if (($scope.user.name || '').length > 0){ //Code }
}