我有一个表单,其中包含绑定到session.email
属性的两个输入字段(session.psw
和LoginController.session
)。当我单击重置按钮时,我调用LoginController.reset()
功能。
我想使用变量sessionDefault (empty)
明确会话属性。但是它只运行一次,如果我重置两次表单,sessionDefault
是undefined
。
我怎样才能将它作为控制器的常量属性?
app.controller('LoginController', function ($scope)
{
this.session={};
var sessionDefault=
{
email : "",
psw: ""
};
this.reset = function()
{ this.session = sessionDefault; };
});
答案 0 :(得分:2)
试试这个
用于重置功能只需使用sessionDefault副本重置它,如下所示
vm.reset = function () {
vm.session = angular.copy(sessionDefault);
};
此处this
指的是控制器实例
请注意,我使用var vm = this;
然后使用应该公开的成员和可以数据绑定到View的成员来装饰vm
。 vm
只表示view modal
这对我来说有三件事。
提供在我的控制器中创建绑定的一致且可读的方法
删除处理此作用域或绑定的任何问题(即嵌套函数中的闭包)
从控制器中删除$scope
,除非我明确需要其他内容
<强> Working Demo 强>
<强>脚本强>
var app = angular.module('myApp', []);
app.controller('LoginController', function ($scope) {
var vm = this;
vm.session = {};
var sessionDefault = {
email: "",
psw: ""
};
vm.reset = function () {
vm.session = angular.copy(sessionDefault);
};
});
<强> HTML 强>
<div ng-app='myApp' ng-controller="LoginController as login">
Email:<input type="text" ng-model="login.session.email"/>{{login.session.email}}
<br>
Psw:<input type="text" ng-model="login.session.psw"/>{{login.session.psw}}
<br>
<button ng-click="login.reset()">Reset</button>
</div>
看看这些美丽的东西。
答案 1 :(得分:0)
this.reset = function()
{ this.session = sessionDefault; };
此上下文中的this
指的是函数(reset
)。如果您想访问“原创”原文。 this
您需要将其存储在变量中。
app.controller('LoginController', function ($scope)
{
this.session={};
var sessionDefault=
{
email : "",
psw: ""
};
var self = this;
this.reset = function()
{ self.session = angular.clone( sessionDefault); };
});