2018.8.23开发技术总结
datepicker时间插件的二次封装 momentjs时间格式操作JS库
JS编写定义变量时,尽量不要定义和框架有歧义的变量,代码可读性降低(eg:filter)
Lodash _.move用法
var array = [1, 2, 3, 4]; var evens = _.remove(array, function(n) { return n % 2 == 0; }); console.log(array); // => [1, 3] console.log(evens); // => [2, 4]
项目实例
class HsSaleSumController { constructor ($scope) { this.scope = $scope; } init () { this.scope.$watch("ctrl.sum", newVal => { if (!newVal) return; newVal.forEach(array => { _.remove(array, (s) => {return !s.addSum && s.name.indexOf("占比") >= 0}) }); this.list = newVal; }, true); } } angular.module('app.datas').component('hsSaleSum', { templateUrl: "app/_data/_directive/hsSaleSum.tpl.html", controller: HsSaleSumController, controllerAs: 'ctrl', bindings: { sum: '<' } });
$state
$state对象是什么意思呢?里面也有一些方法, 最常用的$state.go()这个方法,其实就是路由的跳转。$state(url, params, {reload: true});跳转到指定的url状态,最后传递参数,reload为true表示会重载。其实这个和ui-sref本质上实现的是一个功能 a链接中 ui-sref="user({id:1,name:'lihao'})"同样带参数实现跳转,用$state对象方法$state.go('user', {id:1, name:'lihao'}); 效果一样。
然后在目标页使用下面的$stateParams对象,就可以接受这里的参数。
当然,里面还有href() includes()等方法 具体参考文章下面的ui-router链接
$stateParams
注入$stateParams模块后,其实$stateParams就是一个对象,这个对象其实就是获取传递的参数。
如果配置路由时
-
//url为:/user?id&name
-
//浏览时的url为: /user?id=1&name=lihao
-
//那么当前页面里面控制器的$stateParams对象的值就是:{id:1,name:lihao}
使用$stateParams有两个问题需要注意:
1、只有当状态激活,所有依赖项都注入的时候,才能使用$stateParams。不然获取不到,可以使用$state.current.params代替
2、$stateParams对象里面存在的值,只能是在定义当前url中定义好的参数,也就是$stateParams所处的url。
var array = [1, 2, 3, 4];
var evens = _.remove(array, function(n) {
return n % 2 == 0;
});
console.log(array);
// => [1, 3]
console.log(evens);
// => [2, 4]