当前位置:首页 » 存储配置 » angularjs存储数据

angularjs存储数据

发布时间: 2022-06-12 01:14:01

❶ 如何解决AngularJs在IE下取数据总是缓存的问题

如果用AngularJs在IE下发出GET请求从后台服务取完Json数据再绑定到页面上显示的话,你可能会发现就算数据更新了,IE还是会显示原来的结果。实际上这时候IE的确是缓存了hashtag,没有再次去做Http GET请求最新的数据。
最直接的办法是在后台撸掉OutputCache,但这种做法并不推荐,需要改每一处被Angular调用的地方,代价太大。这种问题应该在前端解决最好。研究了一会儿总结了最有效的解决方法,并不需要改后台代码了。
在你的app config里撸一个$httpProvider进去,比如像我这样,和路由可以配在一起,当然分开配也没问题。
var config = ["$routeProvider", "$httpProvider", function ($routeProvider, $httpProvider) {
// Initialize get if not there
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.get = {};
}
// Enables Request.IsAjaxRequest() in ASP.NET MVC
$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
// Disable IE ajax request caching
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
$routeProvider.when("/", { templateUrl: "Manage/dashboard/index.cshtml" })
.when("/dashboard", { templateUrl: "Manage/dashboard/index.cshtml" })
.when("/dashboard/serverinfo", { templateUrl: "Manage/dashboard/serverinfo.cshtml" })
.when("/dashboard/emaillogs", { templateUrl: "Manage/dashboard/emaillogs.cshtml" })
// other code....
.otherwise({ redirectTo: "/" });
}];
app.config(config);

最关键的就是最后的禁用IE对ajax的缓存
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.get['Pragma'] = 'no-cache';

如果你想这样写,是会爆的:
$httpProvider.defaults.headers.get['If-Modified-Since'] = '0';

这样会导致include指令加载的partial view撸不出来,所以不要作死了

❷ angularjs ng-repeat 渲染完成后数据变化,可以再次渲染吗

前言 大家都知道对于处理小数量,ng-repeat是非常有用的,但是如果需要处理非常大的数量集,还是采用自定义的方法更好一些。特别是数据大多都是静态的或已预存储好的,这个时候应避免使用ng-repeat指令。 ng-repeat中的表达式和 $watch Angular中的表达式都会创建$watch 的Scope 函数。用于监听模型变化,当你的模型部分发生变化时它会通知你。在ng-repeat指令中,如果某行数据有15列数据都绑定了表达式,如果数据有1000多行的话,那么$watch就又奖金15000个,这性能简直难以想象。 所以当我们想要实现ng-repeat的功能又想兼备性能,那只能另找一种方法了。 替换ng-repeat的方法 如果内容是静态的,我们不需要两种方式的绑定,只需要执行一次赋值语句{{::value}}就可以。如果anguluarJS是1.3以下的旧版本,是不支持的一次性绑定语法的。那么最好的方法就是自定义指令,换言之,静态数据可以使用一些简单的方法来格式化。 实现步骤 1、首先创建无序列表,用于保存动态绑定的内容。 创建UL标签作为容器用于显示列表 我们选择动态加载List中的数据,首先添加div标签,并命名为"repeater-alternative"用于渲染流中。 <div> <ul> <div repeater-alternative></div> </ul> </div> 2、定义List 数据: //示例数据 var studentsList = [ { FirstName: "Raj, LastName : "B", Country : "India", BirthDate: "01/01/1990" }, { FirstName: "Kumar, LastName : "S", Country : "India", BirthDate: "01/01/1990" }, .................. .................. .................. .................. ]; $scope.collectionObject = studentsList; //分配给$scope函数 3、实际List内容 主要目的适用于重复集合对象,并显示到列表中,所以需要制定访问循环的逻辑,并按照需求来格式化字符串。 var tableRow = ""; angular.forEach($scope.collectionObject, function (item) { tableRow = tableRow + ['<li>', '<div class="col-md-1">' + item.FirstName + '</div> ', '<div class="col-md-1 ">' + item.LastName + '</div> ', '<div class="col-md-1 ">' + item.Country+ '</div> ', '<div class="col-md-1 ">' + item.Id + '</div> ', '<div class="col-md-1 ">' + $filter('date')(item.BirthDate, 'dd-MMM-yyyy') + '</div> ', '</li>'].join(''); }); 4、List格式化逻辑 一旦collectionObject的值已被赋给其他变量,就需要定义显示数据的表格。 5、如何获取分配CollectionObject的时间 Angular会监控$scope变量值得改变,一旦值被修改,则$watch将被处罚,所以需要将CollectionObject赋值逻辑放到$scope变量的$watch中。 代码如下: $scope.$watch($scope.object, function (oldValue, newValue) { }) 即,当我们执行赋值语句是,Angular会处理这个事件,并格式化List的内容。 $scope.$watch('collectionObject', function (oldValue, newValue) { var tableRow = ""; angular.forEach($scope.collectionObject, function (item) { tableRow = tableRow + ['<li>', '<div class="col-md-1">' + item.FirstName + '</div> ', '<div class="col-md-1 ">' + item.LastName + '</div> ', '<div class="col-md-1 ">' + item.State + '</div> ', '<div class="col-md-1 ">' + item.Id + '</div> ', '<div class="col-md-1 ">' + $filter('date')(item.BirthDate, 'dd-MMM-yyyy') + '</div> ', '</li>'].join(''); }); }) 接下来就是将内容渲染到表格控件中,也就是HTML<DIV>repeater-alternative标签中。 首先必须理解Angular的Directive机制,简单而言,就是我们来指示Angular,当指定的变量被发现,就开始执行后台操作。 var userDirectives = angular.mole([]); userDirectives.directive('DOMElementFound', function () { return { replace: true, link: function ($scope, $elem, attrs) { //后台处理操作 } } }); 我们会通知Angular,当发现"repeater-alternative" 元素,则将以下数据渲染到列表行中。 代码如下: var userDirectives = angular.mole([]); userDirectives.directive('repeaterAlternative', function () { return { replace : true, link: function ($scope, $elem, attrs) { $scope.$watch('collectionObject', function (oldValue, newValue) { var tableRow = ""; angular.forEach($scope.collectionObject, function (item) { tableRow = tableRow + ['<li>', '<div class="col-md-1">' + item.FirstName + '</div> ', '<div class="col-md-1 ">' + item.LastName + '</div> ', '<div class="col-md-1 ">' + item.State + '</div> ', '<div class="col-md-1 ">' + item.Id + '</div> ', '<div class="col-md-1 ">' + $filter('date')(item.BirthDate, 'dd-MMM-yyyy') + '</div> ', '</li>'].join(''); }); //If IE is your primary browser, innerHTML is recommended to increase the performance $elem.context.innerHTML = tableRow; //If IE is not your primary browser, just appending the content to the element is enough . //$elem.append(tableRow); }); } } }); 总结 在本文中,主要模拟了ng-repeat的工作方式和逻辑,但只限于静态内容,所以输出结果与调用ng-repeat结果相同,但是渲染更快,因为该方法只有一种数据绑定方式和少量的$watch。以上就是这篇文章的全部内容,希望本文的内容能对大家的学习或者工作有所帮助,如果有疑问大家可以留言交流。

❸ angularjs localstorage存在哪

angularjs localstorage存在哪
PowerBuilder是美国着名的数据库应用开发工具生产厂商PowerSoft推出的成功产品,其第一版于1991年6月正式投入市场。它是完全按照客户/服务器体系结构研制设计的,采用面向对象技术,图形化的应用开发环境,是数据库的前端开发工具。

PowerBuilder的特点

它支持应用系统同时访问多种数据库,其中既包括Oracel,Sybase之类的大型数据库,又包括FOXPRO之类支持ODBC接口的小型数据库,PowerBuilder是完全可视化的数据库开发工具,它提供了大量的控件,大大加快了项目的开发速度,也使开发者更容易掌握数据库的开发。

❹ 使用AngularJS怎样正确显示时间格式的数据

第一步,时间格式是以斜杠的形式出现的。先选中要设置的单元格,然后右键,选择“设置单元格格式”。

第二步,选好之后会出现一个框框,在数字下面有个分类,找到日期,在右边类型里面查看下有没有以XXXX-XX我插入mysql的时间格式是:2010-01-12
该字段是date类型,可是从数据库查询出来显示在页面的时候却是
2010-01-12
00:00:00.0,我不想要00:00:00.0,而且直接使用${}来读取session中保存的student实体,怎么才能去掉呢,
为什么会出现00:00:00.0呢?原因在哪里?ssh框架的项目取出时间的代码是自己写的吗?
如果是
看看取出时间是不HH代表两位的小时数字(00-23),MM代表分钟数字(00-59)。H是英文的HOUR小时的意思,M是MINUTE分钟的意思。

❺ angularjs公共模块的数据怎么操作

angularjs的指令编写的时候,我们可以在controller中去注入当前使用该directive的$scope;
directive('footCommen', function() {
return {
restrict: 'AE',
controller:function($scope){
//这里的 $scope注入的是当前使用这个directive的$scope对象

//当然这里也可以注入其他的,比如$rootScope/$window等

},
replace: false
}

});

❻ angularjs是一个前端框架,为什么要有sql语句操作数据库那

一、angularjs是一个javascript框架。通过script脚本引入,他是一个用Javascript编写的库。angularjs通过指令扩展了HTML,通过表达式绑定数据到HTML中。AngularJS主要考虑的是构建CRUD(增删改查)应用。
优点:
1. 模板功能强大丰富,并且是声明式的,自带了丰富的Angular指令;
2. 是一个比较完善的前端MVC框架,包含模板,数据双向绑定,路由,模块化,服务,过滤器,依赖注入等所有功能;
3. 自定义Directive(指令),比jQuery插件还灵活,但是需要深入了解Directive的一些特性,简单的封装容易,复杂一点官方没有提供详细的介绍文档,可以通过阅读源代码来找到某些我们需要的东西,如:在directive使用 $parse;
4. ng模块化比较大胆的引入了Java的一些东西(依赖注入),能够很容易的写出可复用的代码,对于敏捷开发的团队来说非常有帮助。
缺点:
1. 验证功能错误信息显示比较薄弱,需要写很多模板标签,没有jQuery Validate方便,所以可以自己封装了验证的错误信息提示;
2. ngView只能有一个,不能嵌套多个视图,虽然有angular-ui/ui-router · GitHub 解决,但是貌似ui-router 对于URL的控制不是很灵活,必须是嵌套式的;
3. 对于特别复杂的应用场景,貌似性能有点问题,特别是在Windows下使用chrome浏览器,不知道是内存泄漏了还是什么其他问题,没有找到好的解决方案,奇怪的是在IE10下反而很快;
4. 这次从1.0.X升级到1.2.X,貌似有比较大的调整,没有完美兼容低版本,升级之后可能会导致一个兼容性的BUG,具体详细信息参考官方文档AngularJS ,对应的中文版本:Angular 1.0到1.2 迁移指南
5. ng提倡在控制器里面不要有操作DOM的代码,对于一些jQuery 插件的使用,如果想不破坏代码的整洁性,需要写一些directive去封装插件,但是现在有很多插件的版本已经支持Angular了,如:jQuery File Upload Demo
6. Angular 太笨重了,没有让用户选择一个轻量级的版本,当然1.2.X后,Angular也在做一些更改,比如把route,animate等模块独立出去,让用户自己去选择。

❼ AngularJS的数据双向绑定是怎么实现的

AngularJS诞生于2009年,由MiskoHevery等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入。


  1. ng-model表示数据双向绑定,把js中对象的属性和html页面上显示的值进行绑定;同时也是把你新赋予的值和对象的属性进行绑定;

    总结:angular的双向数据绑定,个人理解是,通过model建立数据模型,那么视图上的数据就会对应存储在angular程序里,视图上的数据变化会同步到model,model的数据改变也会同步到视图。

    ❽ angularjs window.localstorage存储的数据任何controller都可以读取吗

    ocalStorage存储方法 localStorage.name = localStorage["name"]='vanida';localStorage.setItem("name","vanida");//这三种设置值方式是一样的; localStorage获取值方法 var name = localStorage["name"] = localStorage.name= localStorage...

    ❾ angularjs中怎么给表格点击添加数据

    • 首先是html页面的编写:

    • <!doctypehtml>
      <htmlng-app="myMole">
      <head>
      <metacharset="utf-8">
      <title>学生信息管理</title>
      //需要用到的一些库,要加载的
      <scriptsrc="bower_components/angular/angular.js"></script>
      <scriptsrc="bower_components/ng-table/dist/ng-table.js"></script>
      <scriptsrc="bower_components/ng-table-export/ng-table-export.js"></script>
      <linkrel="stylesheet"type="text/css"/>
      <linkrel="stylesheet"type="text/css"/>
      <linkrel="stylesheet"type="text/css">
      <scriptsrc="mole/scripts/controllers/Form.js"></script>
      </head>
      <body>
      <divui-view></div>
      <divng-controller="FormController">
      <h3>学生信息列表</h3>
      <br>
      <div>
      搜索:<inputtype="text"ng-model="titleFilter"placeholder="输入关键字">//加上<trng-repeat="studentinstudents|filter:titleFilter">实现了表格内容的检索。
      </div>
      <br>
      <tableng-table="tableParams">
      <trng-repeat="studentinstudents|filter:titleFilter">//遍历每一个对象
      <tdtitle="'Name'">
      <spanng-if="!student.$edit">{{student.Name}}</span>
      <divng-if="student.$edit"><inputtype="text"ng-model="student.Name"></div>
      </td>
      <tdtitle="'Id'">
      <spanng-if="!student.$edit">{{student.Id}}</span>
      <divng-if="student.$edit"><inputtype="text"ng-model="student.Id"></div>
      </td>
      <tdtitle="'Grade'">
      <spanng-if="!student.$edit">{{student.Grade}}</span>
      <divng-if="student.$edit"><inputtype="text"ng-model="student.Grade"></div>
      </td>
      <tdtitle="'Actions'"width="200">
      <ang-if="!student.$edit"ng-click="student.$edit=true">Edit</a>
      <ang-if="student.$edit"ng-click="student.$edit=false">Save</a>
      <ang-click="deleteStudent(obj)"ng-if="student.$edit">Delete</a>
      <!--<ang-click="addStudent()"ng-if="student.$edit">Add</a>-->
      </td>
      </tr>
      </table>
      <div>
      <inputtype="text"ng-model="newName"placeholder="inputName"required/>
      <inputtype="text"ng-model="newId"placeholder="inputId"required/>
      <inputtype="text"ng-model="newGrade"placeholder="inputGrade"required/>
      <inputtype="button"ng-click="addStudent()"value="Add"/>
      </div>
      </div>
      </body>
      </html>
    • 接下来是js代码部分
    • varmyMole=angular.mole('myMole',['ngTable']).
      controller('FormController',function($scope,ngTableParams,$sce){
      $scope.students=[
      {Name:'小李',Id:'201401201',Grade:'计算机技术'},
      {Name:'李磊',Id:'201401202',Grade:'计算机技术'},
      {Name:'夏津',Id:'201401203',Grade:'计算机技术'},
      {Name:'杭州',Id:'201401204',Grade:'计算机技术'}
      ];
      $scope.addStudent=function(){//添加学生函数
      $scope.students.push({Name:$scope.newName,Id:$scope.newId,Grade:$scope.newGrade});
      $scope.newName='';
      $scope.newId='';
      $scope.newGrade='';
      };
      $scope.deleteStudent=function(student){//删除一行的内容
      $scope.students.splice($scope.students.indexOf(student),1);
      };
      });

    ❿ angular6.0 如何使用js

    • 下载安装。官方网站:https://docs.angularjs.org/api

      下载地址: https://angularjs.org/

热点内容
win2008ftp中文乱码 发布:2025-01-11 06:10:03 浏览:867
平板配置为什么这么低 发布:2025-01-11 06:05:30 浏览:620
可编程视频 发布:2025-01-11 06:03:24 浏览:784
java多线程编程实战 发布:2025-01-11 06:03:17 浏览:630
图的算法java 发布:2025-01-11 05:57:07 浏览:481
梯形图编译器 发布:2025-01-11 05:56:26 浏览:260
安卓framework编译 发布:2025-01-11 05:55:00 浏览:695
加密学原理 发布:2025-01-11 05:54:20 浏览:788
ocr编程 发布:2025-01-11 05:51:24 浏览:253
androiddecoder 发布:2025-01-11 05:44:13 浏览:732