小编Cok*_*aka的帖子

@ binding的angular 1.5组件/默认值

有没有办法为组件的@绑定指定默认值.

我已经看到了如何使用指令执行此操作的说明:如何在Angular Directive Scope中设置默认值?

但组件不支持编译功能.

所以,我有这样的组件:

{
  name: 'myPad',
  bindings   : {layout: '@'}
}
Run Code Online (Sandbox Code Playgroud)

我希望释放组件的用户必须指定'layout'属性的值.所以这:

<my-pad>...</my-pad>
Run Code Online (Sandbox Code Playgroud)

而不是这个:

<my-pad layout="column">...</my-pad>
Run Code Online (Sandbox Code Playgroud)

而且......这个'layout'属性应该被使用的角度材质JS所消耗,所以它需要在渲染DOM之前被绑定(所以材质JS可以拾取它并添加相应的类到元素).

更新,一些截图来澄清情况:

组件定义:

{
  name : 'workspacePad',
  config : {
    templateUrl: 'src/workspace/components/pad/template.html',
    controller : controller,
    bindings   : {
      actions: '<', actionTriggered: '&', workspaces: '<', title: '@',
      flex: '@', layout: '@'
    },
    transclude: {
      'workspaceContent': '?workspaceContent'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

组件用法:

<workspace-pad flex layout="column" title="Survey List" actions="$ctrl.actions"
  action-triggered="$ctrl.performAction(action)">
  <workspace-content>
    <div flex style="padding-left: 20px; padding-right: 20px; ">
      <p>test test</p>
    </div>
  </workspace-content>
</workspace-pad>
Run Code Online (Sandbox Code Playgroud)

我想在第二个屏幕截图(用法)选项中制作"flex"和"layout". …

binding web-component angularjs

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

将LoDash与EmberCLI一起使用

有没有人有一个使用Ember-CLI使用LoDash构建的(简单)ember-app项目的工作示例?(例如:我想在我的路由和控制器中使用lodash,_.someLodashFunc).

我没有在网上看到任何关于如何做到这一点的明确,逐步解释的线索/文章.

如果可能的话,使用lodash v3.0.0(我使用的是最新的ember-cli,v0.1.9).

谢谢,拉卡


我发现了如何,你需要生成一个自定义的lodash("lodash modern").使用lodash-cli:https://lodash.com/custom-builds

在命令控制台上输入:lodash modern ...,然后你会得到一个生成的javascript文件:lodash.custom.js

将该文件放在ember-cli项目的"vendor"目录下.

修改Brocfile,添加:

app.import('vendor/lodash.custom.js', {
  'lodash': [
    'default'
  ]
});
Run Code Online (Sandbox Code Playgroud)

就是这样......你不必在你的任何js文件中执行"import _ from'loodash'".事实上,不要这样做(你会得到一个错误)._ var很容易获得.

例如,我有一个这样的Route对象:

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    console.log('hohoho: ' + _.chunk(['a', 'b', 'c', 'd'], 2));
    return Ember.Object.create({name: 'Raka'});
  }
});
Run Code Online (Sandbox Code Playgroud)

我可以看到hohoho:,b,c,当我访问那条路线时,我在javascript控制台中打印出来.

更正

你真的不需要那个lodash-cli.

我试过这种方式(我想更合适):

  1. 凉亭安装lodash --save
  2. 在Brocfile.js中,有这一行:app.import('bower_components/lodash/lodash.js');

而已._在路由器/控制器中自动可用.

我对d3做了同样的事情:

  1. 凉亭安装d3 - 保存
  2. 在Brocfile.js中,有这一行:app.import('bower_components/d3/d3.js');

名为'd3'的变量可自动使用.


新增相关链接:

  1. 在ember-cli中导入自定义库
  2. http://tiku.io/questions/2866484/how-to-include-a-local-javascript-im-ember-cli-application(引用:如果你不需要在vendor.js文件中缩小它们,你可以将它们放在public/js中,然后将其作为普通脚本文件包含在app/index.html中.我将此方法用于某些库,如moment.js.公共文件夹在构建期间直接复制到您的站点根目录. )
  3. 在Ember CLI中访问D3等第三方库的正确方法?

ember.js lodash ember-cli

10
推荐指数
2
解决办法
3973
查看次数

Ember调用路由刷新不会导致调用renderTemplate

一旦控制器模型的属性更新,我想让页面自动刷新.

我正在关注这个提示:如何在Ember.js中重新加载当前路线?

所以,我的控制器中有一个动作方法"runSimulation",最后我有这一行:

this.send("sessionChanged");
Run Code Online (Sandbox Code Playgroud)

在相关的路线中,我有:

actions: {
  sessionChanged: function() {
    console.log('YEAH');
    var transition = this.refresh();
    console.log(transition);
  }
},

renderTemplate: function(controller, model) {
  console.log('DINGDONG');
  var model = this.currentModel;
  if (model.simulation.params == undefined) {
    this.render('gobernador/crear-simulacion');
  } else {
    this.render('gobernador/show-simulacion');
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以看到YEAH被打印出来(意思是:控制器发送的"sessionChanged"事件被路由对象中的处理程序成功捕获了...),但我没有看到DINGDONG被打印出来.

我正在使用ember-cli,我启用了日志转换.我可以在我的javascript控制台中看到这个:

Transitioned into 'gobernadores.gobernador.simulacion'
Run Code Online (Sandbox Code Playgroud)

(预计).我想转换到"gobernadores.gobernador.simulacion"将导致调用renderTemplate(由于某种原因,这里没有发生).

什么可能给我们一个线索可能是"执行"刷新返回的"过渡"对象的值.在我的情况下,它给出:

{state: TransitionState, intent: C, **isActive: false,** router: Router, data: Object, resolvedModels: Object…} _visibleQueryParams: Objectdata: Object, handlerInfos: Array[4], intent: C, params: Object, pivotHandler: Class, promise: PromisequeryParams: Object, resolveIndex: 4,resolvedModels: Objectrouter: Routersequence: 4, state: TransitionStatetar, …
Run Code Online (Sandbox Code Playgroud)

ember.js

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

Ember CLI /浏览器刷新/生产/ 404

我使用Ember CLI 0.1.15和emberjs开发了我的webapp.1.8.1

我用这个命令构建了应用程序:ember build --environment production,然后我从我项目的dist文件夹下生成的文件中生成了一个WAR,然后我将WAR放在tomcat的webapps文件夹中.

所以,当我打开应用程序时:http:// mytomcat/myapp / ...它很好,我看到了我的登录屏幕,我登录了,并在我的应用程序中导航,一切都很好.我也可以做后退/前进按钮,并且ember可以很好地处理过渡.

但是当我点击浏览器上的刷新按钮时 - 浏览器的地址栏显示了http:// mytomcat/myapp/inventory /那一刻 - 我从tomcat得到了404回复.

然后我弄清楚它为什么会发生:刷新按钮向tomcat发送一个请求路径/ myapp/myinventory/...当然,服务器上不存在路径/ myinventory.我们在浏览器上看到的所有路由 - 除了基本URL,http:// mytomcat/myapp / - 都是在客户端生成的.

所以,我的问题是:处理这种情况的正确方法(在余烬中)是什么?我需要刷新按钮才能正常工作.任何方式让ember拦截刷新按钮点击事件?

我想这个问题与此有关:https://github.com/stefanpenner/ember-app-kit/issues/486,但它没有我需要的答案.

提前谢谢,拉卡

---更新---

可能相关:http://eviltrout.com/2014/04/10/the-refresh-test.html

ember.js ember-cli

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

离子导航栏下拉菜单

我想在导航栏的右侧有一个图标(三个条).

像这样的东西:

在此输入图像描述

我曾经拥有它,我在互联网上的某个地方找到了代码,但我丢失了我的代码,我再也找不到从中学习该技术的URL.

请帮我恢复技术.

谢谢!

navbar drop-down-menu ionic-framework ionic

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

EmberJS,轮询,更新路线的模型,重新渲染组件

我一直在寻找更新Route模型的机制,并让Component(在与该路由关联的模板内调用)对该事件作出反应,并重新渲染自身.

所以我有这样的索引模板(我传入了IndexController的模型,据我所知,它只是IndexRoute的代理 - 顺便说一句,我没有定义IndexController):

<script type="text/x-handlebars" id="index">
  Below is the bar-chart component
  <br/>
  {{bar-chart model=model}}
</script>
Run Code Online (Sandbox Code Playgroud)

我有我的组件模板:

<script type="text/x-handlebars" data-template-name="components/bar-chart">
</script>
Run Code Online (Sandbox Code Playgroud)

我的组件是在一个单独的JS文件中实现的,如下所示:

App.BarChartComponent = Ember.Component.extend({
  classNames: ['chart'],
  model: null,
  chart: BarChart(),
  didInsertElement: function() {
    Ember.run.once(this, 'update');
  },

  update: function() {
    var data = this.get('model').map(function(sales) {
      return sales.get('amount');
    });

    d3.select(this.$()[0]).selectAll('div.h-bar')
      .data(data)
      .call(this.get('chart'));
  }
}); 
Run Code Online (Sandbox Code Playgroud)

BarChart()函数只返回一个函数对象,该对象执行DOM操作以使用D3生成图形.

我的IndexRoute定义如下:

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('sales');
  }
});
Run Code Online (Sandbox Code Playgroud)

在这个实验中,我使用夹具:

App.Sales = DS.Model.extend({
  amount: DS.attr('number') 
});

idx = 1;

App.Sales.FIXTURES = [
  {id: idx++, …
Run Code Online (Sandbox Code Playgroud)

controller routes model refresh ember.js

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

从列表选项创建映射

我正在尝试从列表选项中创建一个地图.所以,我有一个像这样声明的列表选项:

val authHeaders: Option[Set[String]] = Some(Set("a", "b", "c"))

我想得到这样的地图:(a - > a,b - > b,c - > c).

所以我尝试了这种方式:

for {
  headers <- authHeaders
  header <- headers
} yield (header -> header)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

<console>:11: error: type mismatch;
found   : scala.collection.immutable.Set[(String, String)]
required: Option[?]
             header <- headers
                    ^
Run Code Online (Sandbox Code Playgroud)

我哪里做错了?

补充说明:这个选项让我非常头疼,但我需要了解如何在任何情况下处理它.无论如何,仅仅为了比较,我尝试通过删除选项来消除头痛因素.

scala> val bah = Set("a", "b", "c")
bah: scala.collection.immutable.Set[String] = Set(a, b, c)

scala> (
     | for {
     | x <- bah
     | } yield (x -> x)).toMap
res36: scala.collection.immutable.Map[String,String] = …
Run Code Online (Sandbox Code Playgroud)

scala list-comprehension

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

播放/记录/打印响应正文/运行枚举器/缓冲正文

我正在寻找一种在Play框架中打印响应体的方法,我有这样的代码:

object AccessLoggingAction extends ActionBuilder[Request] {
  def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[Result]) = {
    Logger.info(s"""Request:
      id=${request.id} 
      method=${request.method} 
      uri=${request.uri} 
      remote-address=${request.remoteAddress} 
      body=${request.body}
    """)
    val ret = block(request)
    /*
    ret.map {result =>
      Logger.info(s"""Response:
      id=${request.id} 
      body=${result.body}
      """)
    }
    */ //TODO: find out how to print result.body (be careful not to consume the enumerator)
    ret
  }
}
Run Code Online (Sandbox Code Playgroud)

目前,已注释掉的代码无法正常工作,我的意思是,它会打印出来:

Response:
id=1
body=play.api.libs.iteratee.Enumerator$$anon$18@39e6c1a2
Run Code Online (Sandbox Code Playgroud)

所以,我需要找到一种从Enumerator [Array [Byte]]中获取String的方法.我试着通过阅读这篇文章来了解Enumerator的概念:http://mandubian.com/2012/08/27/understanding-play2-iteratees-for-normal-humans/

所以...,如果我理解正确的话:

  1. 我不应该在将它转换为String的过程中干掉枚举器.否则,客户端将不会收到任何信息.

  2. 让我们假设我弄清楚如何实现T /过滤器机制.但那么......它不会打败Play框架作为非阻塞流式传输框架的目的(因为我会在内存中构建完整的字节数组,然后在其上调用toString,最后记录它)?

那么,记录响应的正确方法是什么?

提前谢谢,拉卡

logging scala enumerator playframework iterate

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

RunDeck/ACL/Custom /非管理员组

难以让属于"用户"组的用户有权访问(至少读取)项目.我已经阅读并尝试了我在互联网上找到的几个例子,似乎都没有用.

我现在需要的是:允许属于"user"组的任何用户阅读名为MYPROJECT的项目.我有这个,保存在/ etc/rundeck下名为user.aclpolicy的文件中.我等了60多秒.我也试过重启RunDeck.没运气.

我一直在:

您没有授权访问项目.联系您的管理员.(用户角色:raka,用户)

description: application access to a project
  application: 'rundeck'
for:
  resource:
    - equals:
        kind: project
      deny: [create] # deny create of projects
    - equals:
        kind: system
      allow: [read] # allow read of system info
    - equals:
        kind: user
      deny: [admin] # allow modify user profiles
  project:
    - equals:
        name: 'MYPROJECT'
      allow: [read] # allow access
      deny: [import,export,configure,delete] # deny admin actions
  storage:
    - deny: [read,create,update,delete] # allow access for /keys/* storage content
by:
  group: user
Run Code Online (Sandbox Code Playgroud)

YAML上面有什么问题?我还检查了/ …

acl rundeck

6
推荐指数
2
解决办法
5861
查看次数

设计具有不变性(在Scala中)

由于强调Scala等编程语言的不变性(避免使用"var"),我的对象中的"状态修改方法"是否必须返回实例的副本(具有新状态)?

我们来考虑龟.我想像这样移动我的乌龟:

val turtle = new Turtle(0, 0, "north")
val turtle2 = turtle.turnLeft().forward(5).turnRight().backward(2)
Run Code Online (Sandbox Code Playgroud)

这里turtle2不会指向同一个Turtle实例(它们是两个独立的实例).事实上,在这一系列运动中,创造了4个临时物体.这就是我实现方法turnLeft的方法,例如:

def turnLeft {
  self.copy(orientation = self.orientation match {
    case "north" => "west"
    case "east" => "north"
    case "south" => "east"
    case "west" => "south"
  })
}
Run Code Online (Sandbox Code Playgroud)

这是一种正确的设计方法吗?

如果是,那么(在每个方法调用上创建新对象)效率/效率如何?如果不是,那么什么是正确的?我对不变性方面(或者一般的函数式编程)的理解有什么不对/缺失?

提前谢谢,拉卡

functional-programming scala immutability

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