小编Oli*_*ent的帖子

Lodash:从多个构造单个对象 - 合并/覆盖属性

注意:我在lodash下提交了这个问题,因为我很确定它可以帮助我很好地解决这个问题,但是现在还没有把它放在它上面

我有一个描述不同用户角色及其权限的对象;

我会像"这样"定义10-15个角色(这不反映应用程序代码,但问题本身):

    var role1 = {
    views: {
        v1: {access: true},
        v2: {access: false},
        v#: {access: false}
    }
}

var role2 = {
    views: {
        v1: {access: false},
        v2: {access: true},
        v3: {access: true},
    }
}
Run Code Online (Sandbox Code Playgroud)

连接的用户将具有多个角色; 在那个例子中它可能是['role1', 'role2'],并且我需要构造一个单独的permissions对象,它将是所有用户角色中定义的所有道具的组合.

它基本上是基于白名单的,其中所有"真实"属性应该覆盖任何被定义为false的属性.因此,预期结果应该是:

permissions = {
    views: {
        v1: {access: true},
        v2: {access: true},
        v2: {access: true}
    }
}
Run Code Online (Sandbox Code Playgroud)

我不太确定如何在不依赖疯狂的嵌套循环的情况下解决这个问题

这是JSBin的一个起点:http://jsbin.com/usaQejOJ/1/edit?js,console

谢谢你的帮助!

javascript lodash

20
推荐指数
1
解决办法
2万
查看次数

Angular Directive:在编译时在现有模板元素上添加ng-class指令

简而言之,这个想法是通过不必手动添加ng-class={'has-error': 'formName.inputName.$invalid'}每一个来简化模板form-group

所以我想创建一个指令,生成一个将添加到模板元素的字符串.该字符串是ng-class带表达式的属性

我认为创建一个在编译阶段添加ng-class属性的快速指令就足够了,但它似乎没有削减它.

指令定义对象

{
    restrict: 'C',
    compile: function(tElement, tAttrs) {
        var $elem = angular.element(tElement),
            formName = $elem.parents('[ng-form]').length ? $elem.parents('[ng-form]').attr('ng-form') : $elem.parents('form').attr('name'),
            controlName = $elem.find('.form-control').attr('name');

        $elem.attr('ng-class', '{"has-error": ' + formName + '.' + controlName + '.$invalid}');

        console.log('added ng-class attr', $elem.attr('ng-class'));
    }
}
Run Code Online (Sandbox Code Playgroud)

插在这里

看到控制台

第1个动态添加form-groupng-class属性.
与之关联的表达式是正确的
但该ng-class指令永远不会执行

第二个在模板中手动添加form-groupng-class属性,并且可以正常工作

-

我在这里错过了什么?

javascript angularjs angularjs-directive

5
推荐指数
1
解决办法
7033
查看次数

Angular 5:在Custom Decorator函数中使用Service

我正在创建一个@Log()Decorator函数用于调试目的;

我希望Decorator将其中的一些逻辑委托给LoggingService依赖于应用程序中的其他服务...

我一直在尝试很多不同的东西,最简单/最直接的方法是将Main(或Shared)模块的Injector缓存为模块本身的静态prop(参见下面链接的StackBlitz示例),这对于懒惰 - 已加载的模块,但不适用于急切加载的模块......

非工作poc:https://stackblitz.com/edit/angular-j1bpvx file = app%2Fdecorator.ts

有没有办法在那里使用那个服务?

谢谢!

javascript dependency-injection decorator typescript angular

4
推荐指数
1
解决办法
2060
查看次数