小编Mir*_*osz的帖子

为什么Angular为每个模型更改运行控制器功能两次?

我有以下层的Angular应用程序:

  • service() 用于计算和数据修改
  • factory() 用作多个控制器的通用数据存储
  • 少数 controllers()

我的控制器从工厂公开功能,反过来从服务调用功能.在HTML中,我运行控制器功能并向用户显示输出:{{ controller.function() }}.

我注意到,当加载页面时,以及每次后续模型更改时,controller.function()都会运行两次.为什么会这样?如何避免不必要的调用?

查看工作示例 - 打开浏览器JS控制台,单击Run并观察该console.log()行执行两次.


JavaScript的

angular.module('myApp',[])
.service('Worker', [function() {
    this.i = 0;
    this.sample = function(data) {
    console.log(this.i.toString() + " " + Math.random().toString());
    return JSON.stringify(data);
  };
}])
.factory('DataStorage', ['Worker', function(worker) {
    var self = this;
    self.data = [{}, {}];
    self.getData = function() {
      return self.data;
    }
  self.sample = function() {
    return worker.sample(self.data);
  };
  return {
    getData: self.getData,
    sample: self.sample
  }; …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

12
推荐指数
1
解决办法
614
查看次数

如何在 Jinja2 中对字符串执行多次替换?

我有带有bootstrap3主题的Pelican网站。该主题使用 Font Awesome 通过社交媒体帐户的链接来放置图标。Font Awesome 类名称是通过将链接文本小写并用破折号替换所有空格来确定的。

问题是,有时我的链接文本不映射到 Font Awesome 类名称。例如,信封图标是由envelope班级提供的,但我真的想要Email作为网站上的链接文本。

我可以更改 Font Awesome 样式表中的类名称,但是这样我将无法使用 Bootstrap CDN,并且每次将 Font Awesome 更新到新版本时都必须进行此类修改。

我决定修改 Pelican 模板,并在编写类名之前进行必要的转换。到目前为止,我的代码如下所示:

{% set name_sanitized = name|lower|replace('+','-plus')|replace(' ','-')|replace('stackexchange', 'stack-exchange')|replace('rss-feed', 'rss')|replace('email', 'envelope') %}
Run Code Online (Sandbox Code Playgroud)

replace我可以使用 来替换这个调用链吗dict?像这样的东西:

{% set replacements = dict('+' = '-plus', ' ' = '-', 
                          'stackexchange' = 'stack-exchange', 'rss-feed' = 'rss',
                          'email' = 'envelope') %}
{% set name_sanitized = name|lower|??? %}
Run Code Online (Sandbox Code Playgroud)

如果没有,是否有其他方法可以使这部分从长远来看更具可读性和可维护性?

python jinja2 pelican

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

将整个变量保存在文件中 - 包括名称

这可能是一个非常愚蠢的问题,但我一直在努力解决这个问题.

我在R中的变量中存储了某个值.变量是mycut

当我想看看变量mycut中的内容时,我明白了

在R

>head (mycut)
chr1;884869;884870 chr1;1022900;1022901 chr1;1052886;1052887
               1                    1                    2
chr1;1052949;1052950 chr1;1093940;1093941 chr1;1102389;1102390
               2                    2                    1
Run Code Online (Sandbox Code Playgroud)

但是当我将这个变量mycut写入文件时

>write(mycut, file='mycut')
Run Code Online (Sandbox Code Playgroud)

然后我看到了我得到的价值

1  1  2
2  2  1
Run Code Online (Sandbox Code Playgroud)

我错过了其他信息.理想情况下我喜欢这种格式

chr1;884869;884870   1
chr1;1022900;1022901 1
chr1;1052886;1052887 2
Run Code Online (Sandbox Code Playgroud)

标签分开.

我怎样才能做到这一点.

请帮忙.

谢谢

r

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

标签 统计

angularjs ×1

javascript ×1

jinja2 ×1

pelican ×1

python ×1

r ×1