小编Jem*_*Jem的帖子

用Javascript扩展原型 - 好的方法?

我想验证我正在使用的方法在扩展原型方面是正确的 - 假设"extend"是正确的词.

这个主题得到了很多克隆.我还在努力正确理解这个话题......

目的是: - 编写干净,良好的代码. - 避免使用框架,如果可能的话,使用普通的Javascript. - 获取有关干净框架的建议,这些框架不会扭曲JS以获取启用类的行为.

这是我的沙箱的父原型:

function Parent(){

}

Parent.prototype = {

    "init":function(){

        this.name = "anon";
    },

    "initWithParameters":function(parameters){

        this.name = parameters.name ? parameters.name : "anon";
    },

    "talk": function(){

        console.log('Parent is: ' + this.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在是Child原型 - 它添加了一个"position"属性并重新定义了这些行为:

function Child(){

    Parent.call(this);
}


Child.prototype = new Parent;
Child.prototype.constructor = Child;

Child.prototype.init = function(){

    Parent.prototype.call(this);

    this.setPosition(0, 0);
}

Child.prototype.initWithParameters = function(parameters){

    Parent.prototype.initWithParameters.call(this, parameters);

    if(!this.position){

        this.position = {x:0, y:0};
    }

    this.setPosition(parameters.pos.x, parameters.pos.y);
}

Child.prototype.setPosition = function(x, y){ …
Run Code Online (Sandbox Code Playgroud)

javascript oop inheritance prototype extend

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

Angular2 +材质:mat-toolbar在mat-sidenav-container上没有阴影,尽管mat-elevation-z*

试图模仿材质指南的外观,我无法将工具栏的阴影渲染到mat-sidenav-container元素的顶部:

看到HTML代码,它不能更简单.我错过了什么?谢谢...

app.component.html

<mat-toolbar class="mat-elevation-z6" color="primary">
  toolbar
</mat-toolbar>

<mat-sidenav-container >

  <!-- Side menu -->
  <mat-sidenav mode="side" opened="true">

    <h3>Menu 1</h3>
    <ul>

      <!-- Home (aka dashboard) -->
      <li>
        <a routerLink="/">dashboard</a>
      </li>

      <!-- Home (aka dashboard) -->
      <li>
        <a routerLink="/resolutions">resolutions</a>
      </li>
    </ul>

    <!-- List resolutions -->
    <h3>Menu 2</h3>
    <ul>
      <li>
        <a>incentive</a>
      </li>
    </ul>

  </mat-sidenav>

  <!-- Routed contents -->
  <div class="contents">
    <router-outlet></router-outlet>
  </div>

</mat-sidenav-container>
Run Code Online (Sandbox Code Playgroud)

material material-design angular

7
推荐指数
2
解决办法
5168
查看次数

有关此Angular + ngRx(效果)的建议 - websocket事件怎么样?

所以我通过构建以下沙箱来试验ngrx&ngrx/effects:

https://stackblitz.com/edit/ngrx-vanilla

快速介绍:

  • 它在app/store中有一个根存储
  • 它在app/features中延迟加载了两个模块
  • 它在app/commons中有单例服务

三页:

  • 行动项目:路由到此页面会触发随机生成三个愚蠢的公司行动项目
  • 用户:具有路由器支持的基本主> detail redux实现
  • 会议:提出问题的地方,点击"开始会议",见证相关的意见交流.

问题和背景:

  • 我理解redux中的所有数据更新都是通过操作实现的
  • "效果"库用于处理异步事件,以便根据第三方事件和异步调用发送新操作.
  • app/common/meeting/service模仿例如websocket或firebase实时数据库推送更新的行为.

收到更新后(在app/store/effects/meeting.effects.ts中说明),将调度新操作.

最后,问题是:让一个共同的服务了解商店是一种干净的做法吗?将一个监听器注册到websocket/firebase实时数据库以便在推送数据时调度操作的最佳位置在哪里?

在这里,我做了一个效果(meeting.effects)对meetingActions.START_MEETING操作类型做出反应,每当推送数据时,都会向商店发送更新订单,但由于我提出的一系列原因,这感觉不对:

  • 难以单独进行单元测试(需要比自身更多的上下文)
  • 在"停止会议"操作的情况下,此方法需要存储订阅(或?)以停止订阅.在我的方法中,无法控制在荒野中创造的可观察物.

这些案件通常如何处理?

redux ngrx ngrx-effects angular ngrx-store

7
推荐指数
1
解决办法
1752
查看次数

Firebase:如何防止在 Firestore 中写入特定字段?

规则集保护用户的条目,如下所示:

  • 只有他或管理员可以读取他的数据
  • 只有管​​理员可以更新用户的权限
  • 用户可以更新他的所有数据,除非他设置了权限对象

规则看起来像:

match /users/{userId} {
  allow read: if isCurrentUser(userId) || isAdmin();
  allow write: if (isCurrentUser(userId) && !isModifyingPermissions()) || isAdmin();

  function isModifyingPermissions(){
    return request.resource.data['permissions'] != null;
  }
}
Run Code Online (Sandbox Code Playgroud)

我被这个isModifiyingPermissions()功能困住了。如果请求具有permissions属性值,它会正确拒绝写入。但是,如果未permissions提供任何属性,则规则会崩溃,并说明以下内容:

Error: simulator.rules line [19], column [15]. Property permissions is undefined on object.
Run Code Online (Sandbox Code Playgroud)

如何编写“检查请求资源上是否存在属性”?

firebase firebase-security google-cloud-firestore

6
推荐指数
1
解决办法
1206
查看次数

Drupal 7:以编程方式获取标签列表(分类)

我需要以编程方式创建Drupal 7网站中使用的标记列表.我正在浏览api /函数,但找不到像"get_list_of_terms()"这样的东西:-)

我该怎么办?谢谢!J.

tags drupal taxonomy drupal-7

5
推荐指数
2
解决办法
5987
查看次数

ObjC,核心数据:"不允许重复"?

我对Core Data很陌生.我的理解是它是一个对象图管理器,它与数据库不同.其中,一些功能将由程序员实现.

在编写一些在coredata框架中具有更好和更优化的对应物的逻辑之前:是否可以添加唯一键?比如entityA.name=@"jem",entityB.name=@"jem"由于名称已经被使用,未能插入entityB?

谢谢:-)嗯.

core-data objective-c

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

移动safari和iOS 11:Web应用程序和全高(100vh)重叠的导航栏

在Mobile Safari上使用100vh不会考虑下方导航栏的高度.

以下面的示例截图为例.为了显示我的应用程序般的页脚,我需要手动(并以丑陋的方式,请参阅下面的代码)从容器的高度减去74px.不这样做只是将我的页脚隐藏在移动Safari的导航页脚下.

有一个共同和干净的方法来解决这个问题吗?

在此输入图像描述

我使用以下代码修复此问题.这对我来说很难看.用户代理推导出平台/浏览器和硬编码偏移以消除本机行为.相信我的解决方案并不好:

编辑 btw此代码在我的Angular4"响应式,移动第一和渐进式网络应用程序"的ngAfterViewInit()方法中运行(buzwords power)

const wrapper:any = document.getElementsByClassName('hack-to-fix-ios-height')[0];
if(wrapper && this.iOS()){
  let height = wrapper.offsetHeight;
  height -= 74;

  // Mobile Safari fix for footer nav
  this.renderer.setStyle(wrapper, 'height', height + 'px');
}
Run Code Online (Sandbox Code Playgroud)

css web-applications mobile-safari responsive-design

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

Angular / SCSS 图像 url 相对

情况:

  • 本项目必须使用第 3 方 CSS 文件。
  • CSS 文件在图像 url 中使用相对路径(例如 url('../images/logo.png')
  • 这些文件不断被提供者更新(所以每次更新时都不能重写路径)
  • 这些将用于 Angular6/SCSS 项目

结构示例:

- src
   | - styles.scss
   | - app
   | - assets
          |- third-party
          |          |- styles      
          |          |      |- general.scss
          |          |- images
          |          |      |- logo.png
          |          |- import.scss
          |- styles/
          |- images/
Run Code Online (Sandbox Code Playgroud)

angular.json 引用了两个样式表:

        "styles": [
          "src/assets/third-party/imported.scss",
          "src/styles.scss"
        ],
Run Code Online (Sandbox Code Playgroud)

更多信息

  • 第三方/样式文件夹中有很多文件,因此编写了“import.scss”以限制Angular.json中声明的样式表数量
  • 第三方 scss 文件也可以在他们自己的子文件夹中(是的),因此不能将 import.scss 存储在thrid-party/styles文件夹中

问题

  • general.scss(和所有其他兄弟姐妹)通过亲戚路径引用图像(和字体),例如 url('../images/logo.png');
    • 除非路径被修改(例如相对于 import.scss)或所有第三方/样式文件都添加到 cli(angular.json)中,否则相对路径会出现问题。请参阅下面的错误。

错误信息:

 Can't resolve '../images/logo.png' in '<project root>\src\assets\third-party\'
Run Code Online (Sandbox Code Playgroud)

对此的推荐方法是什么?在 …

sass relative-path angular

5
推荐指数
0
解决办法
5048
查看次数

Objective-C常量:NSString比较使用==?

我发现有关设置NSString常量的讨论让我按以下方式编写代码:

.h文件:

extern NSString * const kSectionHeaders;
Run Code Online (Sandbox Code Playgroud)

.m文件:

NSString * const kSectionHeaders = @"header";
Run Code Online (Sandbox Code Playgroud)

当程序运行时,它必须根据一系列NSString常量测试文本文件中的单词.

我读取内存比较应该在设置如上所述的功能时起作用:

if (property == kSectionHeaders) {...}
Run Code Online (Sandbox Code Playgroud)

不起作用:(以下工作,但它被描述为一个糟糕的解决方案(较慢,还有什么?):

if ([property isEqualToString:kSectionHeaders]){...}
Run Code Online (Sandbox Code Playgroud)

我觉得我做错了什么.但看不出来的是什么!请帮忙:-)谢谢!J.

constants equals objective-c string-comparison nsstring

4
推荐指数
2
解决办法
2036
查看次数

HTML5离线appcache:强制刷新所有内容?

我的小型HTML5应用程序需要在服务器上重新部署.我知道我只需触摸.appcache文件就可以在下次访问时让每个浏览器更新到最后一个版本的文件.

清单看起来像这样:

CACHE MANIFEST
#Version: 201209251353

index.html
apple-touch-icon.png
css/styles.css
data/dump.bin
img/background.png
img/sprites.png
js/core.js
js/jquery-1.8.1.min.js
vid/walkthrough.mov
Run Code Online (Sandbox Code Playgroud)

为了"触摸",我添加了一个评论(#Version :),我的意思是在内容更改时更新.

奇怪的是,一些文件已更新.并非所有,对于isntance,一位同事获得最新的core.js,但仍然显示一个旧的walkthrough.mov.

是否有一种简单的机制来强制更新缓存中的所有文件?

我在SO上找到了以下代码并将其包含在脚本中,希望它能提供帮助.不确定它是多么需要:(

    // Application cache refresh
    window.addEventListener('load', function(e) {

      window.applicationCache.addEventListener('updateready', function(e) {
        if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
          // Browser downloaded a new app cache.
          // Swap it in and reload the page to get the new hotness.
          window.applicationCache.swapCache();
          if (confirm('A new version of this site is available. Load it?')) {
            window.location.reload();
          }
        } else {
          // Manifest didn't changed. Nothing new to …
Run Code Online (Sandbox Code Playgroud)

html5 offline-caching html5-appcache

3
推荐指数
1
解决办法
6164
查看次数