对于使用不带指令的JavaScript函数进行Angularjs表单/字段验证感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解jsform表单不用button提交,并且为您提供关于angul
对于使用不带指令的JavaScript函数进行Angularjs表单/字段验证感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解js form表单 不用button提交,并且为您提供关于angularjs – 使用Gulp来包装一个IIFE的javascript文件、AngularJS中是否可以在经典的javascript函数中使用数据绑定?、AngularJS系列之JavaScript函数和对象、Angularjs表单/字段验证使用JavaScript函数没有指令的宝贵知识。
本文目录一览:- 使用不带指令的JavaScript函数进行Angularjs表单/字段验证(js form表单 不用button提交)
- angularjs – 使用Gulp来包装一个IIFE的javascript文件
- AngularJS中是否可以在经典的javascript函数中使用数据绑定?
- AngularJS系列之JavaScript函数和对象
- Angularjs表单/字段验证使用JavaScript函数没有指令
使用不带指令的JavaScript函数进行Angularjs表单/字段验证(js form表单 不用button提交)
有没有一种方法可以在 不使用指令的情况下 以角度验证字段?例如:我想在输入字段上进行以下验证。
- 如果字段为空,则应显示“字段必须包含值”消息。
- 如果字段包含字母数字字符,则应显示“字段只能包含数字”。
- 偶数-给用户的消息“值必须是偶数”。
我想在对JavaScript函数的调用中进行以下验证。
我四处搜寻,发现有一种使用ng-valid和$ error的方法,但是我没有设法使其工作。
下面的代码根据我得到的答案之一:
<div ng-app>
<form name='theForm' novalidate>
<input type='text' name='theText' ng-model='theText' ng-pattern='/^[0-9]+$/'/>
<span ng-show='theForm.theText.$error.pattern'>Field can contain only digits</span>
<span ng-show='theText.length<1'>Field must contain a value</span>
<span ng-show='theText%2!=0&&document.getElementsByName("theText").value!=""&&!theForm.theText.$error.pattern&&!theForm.theText.$pristine'>Value must be an even number</span>
<br/><input type='submit' value='Submit' />
</form>
我想将最后一个[span]内的内容放入JavaScript函数中,以使其更加通用,并在条件改变时最终仅更改JS而不更改HTML
有人可以请教吗?一个有效的例子会很棒。
angularjs – 使用Gulp来包装一个IIFE的javascript文件
向每个文件添加一个IIFE,然后添加“use strict”是无聊的。
有什么办法自动化吗?我使用gulp来运行任务。
gulp-wrap
plugin与一个简单的模板:
var wrap = require("gulp-wrap"); gulp.src("./src/*.js") .pipe(wrap('(function(){\n"use strict";\n<%= contents %>\n})();')) .pipe(gulp.dest("./dist"));
这将包含每个文件的内容与模板:
(function(){ "use strict"; //contents here… })();
您还可以将模板存储在文件系统上,而不是将其嵌入到gulpfile中,并使用wrap({src:’path / to / template’})调用gulp-wrap
AngularJS中是否可以在经典的javascript函数中使用数据绑定?
如果我写:
<div>Hello {{name}}!</div>
我在控制器.js之类的东西:
$scope.name = 'Bruno';
结果将是“你好布鲁诺!”……这太棒了!现在我编辑了模板:
<div>Hello <span id="name"></span>!</div>
我还在关闭身体之前添加了这个javascript函数:
<script src="lib/angular/angular.js"></script> <script src="js/app.js"></script> <script src="js/services.js"></script> <script src="js/controllers.js"></script> <script src="js/filters.js"></script> <script src="js/directives.js"></script> <script type="text/javascript"> function fillName(subject) { $("#name").text("Hello " + subject); } fillName({{name}}); // this throws "SyntaxError: invalid property id" </script> </body>
所以我的问题是:
AngularJS中是否可以在经典的javascript函数中使用数据绑定?
更新:
// i changed: fillName({{name}}); with: fillName('{{name}}');
这解决了错误…但仍然没有出现名称……我还在努力……
建议随时欢迎!
我将在回答中加上以下警告:如果您正在编写AngularJS应用程序,那么您将需要使用Angular提供的功能(如指令)来执行此类操作,而不是超出Angular应用程序生命周期并编写然而,为了解决问题的学术答案,这里是全球职能等.
概观
您尝试访问的Angluar魔法基于一些设施:
范围(docs)
范围为Angular表达式(您在属性和双重曲线中放置的内容)提供了上下文,并提供了在该上下文中监视这些表达式的评估更改所需的功能.例如,Scope#$watch
允许您注册每当表达式的求值更改时执行的回调.
$interpolate(docs)
Interpolate接受一个字符串,该字符串可以包含双曲面内的表达式,并将其转换为新的字符串,并将表达式结果插入到原始字符串中. (调用$interpolate(str)返回一个函数,当对提供作用域的对象调用该函数时,返回一个字符串.)
把它放在一起
在编写Angular应用程序时,您通常不必担心这些细节 – 控制器会自动通过范围,并且DOM文本会自动插入.由于您试图在Angular应用程序的生命周期之外访问这些内容,因此您必须跳过其中一些以前隐藏的环节.
angular.injector(docs)
当您使用app.controller,app.factory等在模块上注册服务,过滤器,指令等时,您提供的功能将由注入器调用. Angular在Angular应用程序中为您创建一个,但由于我们没有使用它,您需要使用angular.injector自己创建一个.
一旦有了一个注入器,就可以使用injector.invoke(fn)来执行函数fn并注入任何依赖项(比如$interpolate)以便在函数内部使用.
一个简单的例子
这是一个非常基本的例子
>提供输入和变量之间的双向数据绑定
>使用$interpolate将数据绑定到HTML视图中
Name: <input id="name" type="text" autocomplete="off"> <button id="setname">Set name to Bob</button> <div id="greeting"></div>
var injector = angular.injector(['ng']); injector.invoke(function($rootScope,$interpolate) { var scope = $rootScope.$new(); var makeGreeting = $interpolate("Hello {{name}}!"); scope.$watch('name',function() { var str = makeGreeting(scope); $("#greeting").text(str); $("#name").val(scope.name); }); var handleInputChange = function() { scope.$apply(function() { scope.name = $('#name').val(); }); }; var setNametoBob = function() { scope.$apply(function() { scope.name = "Bob"; }); }; $("#name").on('keyup',handleInputChange); $("#setname").on('click',setNametoBob); handleInputChange(); });
这是一个演示技术的jsfiddle:http://jsfiddle.net/BinaryMuse/fTZu6/
AngularJS系列之JavaScript函数和对象
这篇文章针对的是有2年以上编程经验的朋友们参考的,作参考资料之用,不从基础讲起。
在ES6之前,JavaScript没有class、extends、abstract这样的关键字。在支持ActiveX的浏览器中可以用注册的COM类型声明JavaScript的对象。
1.1.1. 对象字面量
var x={ name:"李婷",age:22 };//一个对象,没有自有属性与方法 var y=[];//对象个数为0的数组,有数组的属性与方法
1.1.2. 用函数声明类
对于Java而言,函数的本质是一个代码块,有特定的入口和出口。对于JavaScript而言,除了这些,它还有声明类的对象的功能。当用函数声明类的对象时,类的构造函数是这个函数。
var People=function (name,age){ this.name=name; this.age=age; function getAge(){ returnthis.age; } function getName(){ returnthis.name; } functionsetName(name){ this.name=name; } functionsetAge(age){ this.age=age; } };
1.1.3. 用散列表声明匿名类的对象
示例工程:J31。代码范式如下:
var student1={}; var student2=newObject(); var student3={ name:"李婷",Age:22,getName:function() { returnthis.name; } }; console.log(student1); console.log(student2); console.log(student3); console.log(student1==student2); console.log(student3.getName());
1.1.4. 检索与更新
直接使用成员变量的名称就可以检索。对象没有的成员变量可以在赋值的时候创建。更新的对象的成员名称已经存在的问题参见章节“多态”。示例工程:J32。
var student1={ name:"李婷",age:23,"first-name":"不告诉你","truth-age":22,getName:function(){ returnthis.name; } }; console.log(student1.name); console.log(student1["first-name"]); student1.name="李婷"; student1["first-name"]={ firstName:"李",fullName:"李婷" }; student1["second-name"]="婷"; student1.secondName="婷"; console.log(student1.name); console.log(student1["first-name"]); console.log(student1["second-name"]); console.log(student1.secondName);
1.1.5. 引用(Reference)
对象通过引用来传递。语言自身不支持拷贝功能。示例工程:J33。
var student1={ name:"李婷",age:23 }; var x=student1; x.secondName="婷" console.log(student1.secondName); var a={},b={}; console.log(a==b); a=b; console.log(a==b); var i={},j={},k={}; console.log(i==j==k); i=j=k={}; i=true; console.log(j==k); console.log(i==j==k); i=j=k={}; k=true; console.log(i==j==k);//自左向右结合
1.1.6. 原型(Prototype)、反射(Reflection)与委托
每个类都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到Object.prototype这个JavaScript中的标准对象。
反射支持获取对象的数据类型,包括简单数据类型和复杂数据类型。typeof表达式可以获取对象的数据类型。函数本身也是一个数据类型,它的类型名称是"function"。
修改内置对象的方法是操作内置对象的prototype。对象的一个或多个继承关系以及根据继承次序依次获得的父类型的成员构成原型关系链。获取一个对象的某个成员且该对象没有此属性名称的时候,JavaScript引擎根据继承次序逆向寻找至根类型Object。如果找不到就返回undefined。这个过程称为委托。
null与undefined是不相同的。示例工程:J35。
if(typeofObject.prototype.sayHello!=="function"){ Object.sayHello=function(o){ varF=function(){ console.log("HelloWorld from Object.sayHello!"); } F.prototype=o; return newF(); } } varPeople=function(){ this.name="李婷"; }; var person1=newPeople(); console.log("People是什么:"+typeof People); console.log("person1类型名称:"+typeof person1); console.log("null与undefined是否相等:"+null==undefined); console.log(person1); console.log(person1.sayHello);//委托 console.log(person1.prototype.sayHello);//出错 console.log("你看不到这一行。把上面一行错误代码注释掉就可以了。");
1.1.7. 多态(polymorphism)、枚举(Enumation)
for in语句可以遍历对象中的所有成员,包括变量和方法,但不包括继承自父类的以及复杂数据类型的成员。hasOwnProperty方法可用来判断当前对象是否存在自有方法,还有可用遍历数组。JS不支持重载和多态,但用户可以写多个名称相同的函数。当遇到多个名称相同的函数时,JS自动使用最后定义的函数。示例工程:J37。
var student1={ name:"李婷",age:22,courses:{ culture:{ id:"AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",teacher:"你1" } },marks:{ culture:100 },getName:function(){ return"函数自带的方法:"+this.name; } }; var goto=false; for(name instudent1){ output://仅测试用,项目中不要这样干。 if(student1.hasOwnProperty(name)){ if(goto){ console.log("继承的:"+name); }else{ console.log("自有的:"+name); } if(typeofstudent1[name] == "function"){ console.log("方法:"+name); }else{ console.log("属性:"+name); } goto=false; }else{ goto=true; breakoutput; } } varStudentClass=function(name,age){ this.name=name; this.age=age; functionwriteMessage(){ console.log("没有参数的writeMessage方法"); } functionwriteMessage(tip){ console.log("有一个tip参数的writeMessage方法"); console.log(tip); } function writeMessage(tip,count){ console.log("有一个tip参数和一个参数count的writeMessage方法"); console.log(tip); console.log(count); } this.tell=function(){ writeMessage(); writeMessage("提示"); writeMessage("提示",2); } } var student2=newStudentClass("李婷",22); student2.tell();
1.1.8. 删除对象的属性
delete运算符可以用来删除对象的成员变量,不能删除成员函数。
varStudentClass=function(name,age){ this.name=name; this.age=age; this.courses={ culture:{ id:"AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",teacher:"你1" } }; this.marks={ culture:100 }; }; StudentClass.prototype.getName=function(reserved) { console.log(reserved+this.name); returnthis.name; } StudentClass.prototype.getAge=function(reserved) { console.log(reserved+this.age); returnthis.age; } var student1=newStudentClass("李婷1",22); var student2=new StudentClass("李婷2",22); console.log("删除前:"); console.log(typeofstudent1.name); console.log(typeofstudent1.getName); console.log(typeofstudent2.name); console.log(typeofstudent2.getName); deletestudent1.name; deletestudent1.getName; console.log("删除后:"); console.log(typeofstudent1.name); console.log(typeofstudent1.getName); console.log(typeofstudent2.name); console.log(typeofstudent2.getName);
1.1.9. 内置参数
函数声明不需要写明函数有多个少。函数没有声明参数有多少个时根据函数的内部逻辑决定传递参数个数。示例工程:J44。
varstudent1=function(){ document.write("参数个数:"+arguments.length); document.write("<br/>"); document.write("<br/>"); document.write("<br/>"); document.write("我叫"+arguments[0]+",我今年"+arguments[1]+"岁了"); } student1("李婷",22,100);
Angularjs表单/字段验证使用JavaScript函数没有指令
例如:我想对输入字段进行以下验证.
>如果字段为空,我们应该显示“字段必须包含一个值”消息.
>如果字段包含字母数字字符,我们应该显示“字段只能包含数字”.
>一个EVEN号码 – 给用户的消息“值必须是偶数”.
我想在调用JavaScript函数时进行以下验证.
我googled,看到有一种方法使用ng有效和$错误,但我没有设法使其工作.
下面的代码是根据我得到的答案之一:
<div ng-app> <form name='theForm' novalidate> <input type='text' name='theText' ng-model='theText' ng-pattern='/^[0-9]+$/'/> <span ng-show='theForm.theText.$error.pattern'>Field can contain only digits</span> <span ng-show='theText.length<1'>Field must contain a value</span> <span ng-show='theText%2!=0&&document.getElementsByName("theText").value!=""&&!theForm.theText.$error.pattern&&!theForm.theText.$pristine'>Value must be an even number</span> <br/><input type='submit' value='Submit' /> </form>
我想把最后一个[span]内的内容放在一个JavaScript函数中,以便使它变得更为通用,并且最终只会在条件变化时改变JS而不是HTML
有人可以请指教吗?一个很好的例子.
$scope.isOdd = function($value){ return $value % 2; } ... <form name="myform"> <input ng-model="myVal" name="value" required ng-pattern="/^[0-9]*$/" ui-validate=" 'isOdd($value)' "></input> <pre>{{myform.value.$error|json}}</pre> </form>
没有比这更简单,它是PROPER AngularJS验证(不是愚蠢的手表)
Here’s a working demo
今天关于使用不带指令的JavaScript函数进行Angularjs表单/字段验证和js form表单 不用button提交的分享就到这里,希望大家有所收获,若想了解更多关于angularjs – 使用Gulp来包装一个IIFE的javascript文件、AngularJS中是否可以在经典的javascript函数中使用数据绑定?、AngularJS系列之JavaScript函数和对象、Angularjs表单/字段验证使用JavaScript函数没有指令等相关知识,可以在本站进行查询。
本文标签: