发表于: 2017-05-10 21:54:25

1 1083


今天完成的事情:完成数据编辑功能中ng-optionsng-repeat的问题,传输数据对象问题(今天真的只做了这两点,前一个卡了半天,后一个又卡了半天)

明天计划的事情:刷新页面数据保留angular缓存或者$http缓存,基本上这样任务十的功能就都完了。然后补之前没怎么写的样式。

遇到的问题:1.在用ng-repeat渲染数据类型的时候,当新增页面时候,类型的下拉菜单可以正常的将得到的数据进行双向绑定。但是在编辑页面时候,数据可以获取到,但是只能得到数值,无法自动渲染到页面中的option里面。

在一个印度三哥的blog里看到了解析:

Quoted from AngularJS documentation:

Note: ngOptions provides an iterator facility for the ‘option’ element which should be used instead of ngRepeat when you want the select model to be bound to a non-string value. This is because an option element can only be bound to string values at present.

应该是官方文档说的由于option标签只适用于string类型的值,所以当你想渲染一个非string类型的值的时候,ng-options就可以替代ng-repeat进行渲染。

ng-options="x.number as x.name for x in typeOfData”它的写法与ng-repeat略有不同,x作为typeOfData的简写值,x.name作为渲染出来的参数,而x.number是作为实际取到的值。如果不写x.number as,实际值应该是整个x对象。


2.在向后台传输编辑数据时,会用一个带有Id的特殊接口,出现几个连环combo天坑!!接口文档上有错误就算了,写的status 的类型是string,这倒是没什么。但是文档上写的请求参数只写了6个,实际上需要将从后台获取到的数据对象全部传进去才行。文档里没有写,返回的状态码事-100000.根本不知道是什么错了。在无用功的近2小时各种尝试后,师兄们提醒我需要传所有的数据。之后因为一个小细节又浪费了一个多小时成功:$http方法中params只能传递object对象,之前我们传递很多参数到后台都是用{}将数据包装成对象传递,结果我没注意到这一点,将我的对象数据又直接放在了{}中,相当于对象中包含了一个对象?各种传递不成功。一直到看到一个基本的伪代码模板,用来调用前面的这个方法:

$http({  

   method: string,  

   url: string,  

   params: object,  

    data: string or object,  

    headers: object,  

    transformRequest: function transform(data, headersGetter) or an array of functions,  

    transformResponse: function transform(data, headersGetter) or an array of functions,  

    cache: boolean or Cache object,  

    timeout: number,  

    withCredentials: boolean  

 });  

当我看到params:object的时候,才回过神来!!!!啊啊啊啊!!!!


收获:1.今天收获的知识点ng-optionsng-repeat的不同写在上面了。

2。angular有自己的生命周期。循环给一个 angular监听的变量复值时。最好还是用angular自带的循环方法。“angular.foreach”

var objs =[{a:1},{a:2}];
angular.forEach(objs, function(data,index,array){
//data等价于array[index]
console.log(data.a+'='+array[index].a);
});

参数如下:

objs:需要遍历的集合

data:遍历时当前的数据

index:遍历时当前索引

array:需要遍历的集合,每次遍历时都会把objs原样的传一次。



返回列表 返回列表
评论

    分享到