小编Kur*_*ler的帖子

ReactJS:放置在子组件上时onClick处理程序不会触发

我最近开始合作ReactJS.具体来说,我正在使用react-rails红宝石宝石和react-bootstrap组件.

我有一个关于将onClick事件监听器放在子组件中的问题.

从下面的代码示例中可以看出,我有一个父组件在其render函数中"调用"子组件.在该render函数中,我有React onClick侦听器,handleToggle在单击它时调用.

###* @jsx React.DOM ###

ToggleIconButton = React.createClass
  getInitialState: ->
    toggleOn: false
  handleToggle: (evt) ->
    this.setState(toggleOn: !this.state.toggleOn)
  render: ->
    `<IconButton onClick={this.handleToggle}>Toggle Button</IconButton>`

IconButton = React.createClass
  render: ->
    # BsButton and BsGlyphicon are React-Bootstrap components
    `<BsButton>
      <BsGlyphicon glyph={this.props.glyph} />
      {" " + this.props.text}
     </BsButton>`
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不符合我的想法.ToggleIconButton::handleToggle永远不会被召唤.而是将onClick侦听器放在IconButton并引用ToggleIconButton::handleToggle.

反应开发工具屏幕


我不想添加任何其他行为IconButton.我看待它的方式,不应该放置条件逻辑IconButton.它应该做的只是代表一个图标和按钮,而不必担心任何浏览器事件.这ToggleIconButton是为了什么.

虽然我知道我可以React Div …

reactjs react-jsx

55
推荐指数
2
解决办法
9万
查看次数

在数组中的每个元素上设置$ scope.$ watch

我试图找出如何设置$scope.$watch数组中的每个元素.我只关心每个元素的某些属性.

在我的例子,每个rental_date对象有三个属性:date,start_time,和stop_time.每当start_time改变时,我希望将stop_time其设置为2小时后start_time.

$ngResource(使用呼叫角1.1.5):

Agreement.show( 
  id: 5 
).$then ((success) ->
  $scope.agreement = success.data.agreement

  # returns an array of rental dates
  $scope.rental_dates = success.data.rental_dates

  # $watch goes here
Run Code Online (Sandbox Code Playgroud)

以下是$watch我尝试过的函数的四种变体:

1:

angular.forEach $scope.rental_dates, (date, pos) ->
  $scope.$watch date.start_time, ((newval, oldval) ->
    $log.info 'watch changed'
    $log.info newval
    $log.info oldval
  ), true
Run Code Online (Sandbox Code Playgroud)

2:

angular.forEach $scope.rental_dates, (date, pos) ->
  $scope.$watch $scope.rental_dates[pos].start_time, ((newval, oldval) -> …
Run Code Online (Sandbox Code Playgroud)

angularjs

13
推荐指数
3
解决办法
2万
查看次数

从 do 块返回查询

我想要做的就是能够使用一个do块来设置一些变量,然后返回一个查询以STDOUT使用这些变量。

DO $$
DECLARE book_name TEXT;
DECLARE book_slug TEXT;
BEGIN
  book_name := 'Ise Monogatari';
  book_slug := 'ise';

  SELECT bk.id,
    bk.created_at,
    bk.updated_at,
    bk.title,
    bk.japanese_title,
    bk.content,
    bk.description,
    'public/cjp/' || book_slug || '/images/cover.png' cover_image_path,
    'public/cjp/' || book_slug || '/images/title.png' title_image_path,
    'public/cjp/' || book_slug || '/images/thumb_left.png' thumbnail_path,
    'public/cjp/' || book_slug || '/images/background.png' background_image_path,
    bk.about,
    bk.published
  FROM books bk
  WHERE bk.title = book_name;
END $$;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

[42601] ERROR: query has no destination for result data
Hint: If you want to discard …
Run Code Online (Sandbox Code Playgroud)

postgresql

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

React.js输出到jsc:ReferenceError:<component>未定义

react-rails在rails项目中使用gem.虽然javascript并且jsx工作一致,但我的coffeescript文件似乎永远不会起作用.请注意,我正在尝试使用纯coffeescript解决方案,没有内插的jsx.

在我的coffeescript文件中(其扩展名为*.js.coffee)

{div} = React.DOM

Hello = React.createClass
  render: ->
    (div {}, ['Hello ' + @props.name])
Run Code Online (Sandbox Code Playgroud)

在我看来:

= react_component 'Hello', name: 'World'
Run Code Online (Sandbox Code Playgroud)

这是我在控制台中始终遇到的错误:

ReferenceError: Hello is not defined
Run Code Online (Sandbox Code Playgroud)

reactjs

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

Android应用可以使用java 8编译的jar吗?

假设我创建了一个独立于Android框架的java库.这个java库中的类/方法是用Java 8流和lambdas 编写的.然后我将我的java库编译成jar并将其作为依赖项添加到我的Android项目中.

即使Android本身只支持Java 7,我的Android应用程序可以使用该jar吗?

谢谢你的任何信息.

java android

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

aws elasticbeanstalk:无法通过 eb cli 部署到工作环境

我已经为我的 eb 应用程序创建了一个工作环境,以便利用它的“周期性任务”功能cron.yaml(位于我的应用程序的根目录中)。这是一个简单的 sinatra 应用程序(目前),我想用它来向我相应的 Web 服务器环境发出请求。

但是,我无法通过 eb cli 进行部署。下面是我运行的情况eb deploy

???  eb deploy
Creating application version archive "4882".
Uploading myapp/4882.zip to S3. This may take a while.
Upload Complete.
INFO: Environment update is starting.
ERROR: Service:AmazonCloudFormation, Message:Stack named 'awseb-e-1a2b3c4d5e-stack'
aborted operation. Current state: 'UPDATE_ROLLBACK_IN_PROGRESS'
Reason: The following resource(s) failed to create: [AWSEBWorkerCronLeaderRegistry].
Run Code Online (Sandbox Code Playgroud)

我环顾了 CloudFormation 仪表板以查看是否存在可能的错误。在阅读了一些关于我可以找到的内容后AWSEBWorkerCronLeaderRegistry,我发现它很可能是一个DynamoDB更新/创建的表。但是,当我查看DynamoDB仪表板时,没有列出任何表格。

与往常一样,我们感谢任何帮助、反馈或指导。

amazon-web-services amazon-elastic-beanstalk

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

重新框架:输入:改变重置!不会改变输入值

我正在玩这个re-frame框架.


在下面的代码中,当用户输入以下内容时,我无法更新输入值:

(defn measurement-input [{:keys [amount unit path]}]
  (let [amt (atom amount)]
    (fn []
      [:div
       [:input {:type "text"
                :value @amt
                :on-change #(reset! amt (-> % .-target .-value))}]
       [:input {:type "button"
                :value unit}]])))
Run Code Online (Sandbox Code Playgroud)

输入值将不会改变,直到,直到我换:value:defaultValue.我很确定上面的例子很接近镜像Reagent的输入示例.


在下面的代码中,我试图在用户更新输入值时做两件事.我正在尝试reset!输入的值以及dispatch事件处理程序的值.我在调用中已经完成了这两个函数调用do.

另外值得注意的是,在下面的代码中,用户能够更新文本字段中的值.

(defn measurement-input [{:keys [amount unit path]}]
  (let [amt (atom amount)]
    (fn []
      [:div
       [:input {:type "text"
                :value @amt
                :on-change (do #(reset! amt (-> % .-target .-value))
                                (re-frame/dispatch [:update-value @amt]))}]
       [:input {:type …
Run Code Online (Sandbox Code Playgroud)

clojurescript reagent re-frame

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

对于新的ActiveRecord模型,为什么有些has_many:通过关联为sql查询添加(1 = 0)谓词和distinct子句?

每当我实例化一个新ActiveRecord模型(一个尚未持久存储到数据库中)并尝试访问构建模型上的某些不同关联时,Rails查询构建器有时会:

  1. (1=0)谓词添加到where查询的子句中.
  2. 在select语句中添加'distinct`子句.

我认为只有在has_many :through关联加入两个或更多表时才会发生这种情况.

我想知道它为什么添加(1=0)谓词以及distinct子句.对于(1=0)谓词,新模型是否已保存到数据库无关紧要(对吗?).我不知道为什么distinct要添加这个条款.

我在下面有一个简单的例子.

class Assignment < ActiveRecord::Base
  has_many :assignment_attachments
  has_many :attachments, through: :assignment_attachments
end

class AssignmentAttachment < ActiveRecord::Base
  belongs_to :assignment
  belongs_to :attachment
end

class Attachment < ActiveRecord::Base
  has_many :assignment_attachments
  has_many :assignments, through: :assignment_attachments
end

class Submission < ActiveRecord::Base
  belongs_to :assignment
  has_many :assignment_attachments, through: :assignment
  has_many :attachments, through: :assignment
end

s = Submission.new(assignment: Assignment.first)
s.assignment #=> #<Assignment ...>
s.assignment_attachments …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-4

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

clojure'val'返回这个值是什么?

我刚开始学习clojure,并且已经阅读了一些简单的例子,然后尽力为rtfm提供概念.

但是我对val以下示例中的操作感到有点困惑.这是从val的Clojure doc示例中获得的.

(first {:one :two}) ;; => [:one :two]
Run Code Online (Sandbox Code Playgroud)

这里,传递的是hash-map:one和值的a .在幕后,Clojure的转换这到的.由于只有一个在此,它返回.:twofirsthash-mapsequencevectorsvectorsequence[:one :two]

(val (first {:one :two})) ;; => :two
(val [:one :two]) ;; => ClassCastException clojure.lang.PersistentVector cannot be cast to java.util.Map$Entry
(val {:one :two}) ;; => ClassCastException clojure.lang.PersistentArrayMap cannot be cast to java.util.Map$Entry
Run Code Online (Sandbox Code Playgroud)

如果我试着调用val(我认为)a hash-map(我意识到它实际上是一个"持久性数组映射"),我得到了如上所示的异常.

我也对以下内容感到困惑:

(first {:one :two}) ;; # => [:one :two]  (this is a vector right?)
(val …
Run Code Online (Sandbox Code Playgroud)

clojure

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

Wordpress小部件:将$ this-> get_field_name()传递给javascript

我尝试过以下两种方式之一:

  1. form我的Widget类(扩展WP_Widget)的方法中,我有以下片段,它设置一个全局javascript变量:

    if( $instance ) :
    ?>
        <script type="text/javascript">
            window.widget_order_name = "<?php echo $this->get_field_name( 'order' ) ?>";
        </script>
    <?php
    endif;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在小部件管理标记中,我还尝试创建以下html结构:

    <div
      field_name='<?php echo $this->get_field_name( 'order' ) ?>'
      id='order_field_name'
      class='hidden'>
    </div>
    
    Run Code Online (Sandbox Code Playgroud)

在我的widget admin javascript文件中,我以两种方式之一获取此field_name的值(如下所示),然后将该小部件名称附加到隐藏输入字段(包含我想要存储的值)的名称.

  1. 第一种方式,使用window.widget_order_name:

    var widget_field_name = window.widget_order_name;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 第二种方式,jQuery用来抓住field_name:

    var widget_field_name = $( '#order_field_name' ).attr( 'field_name' );
    
    Run Code Online (Sandbox Code Playgroud)

我的问题:

每当我第一次将小部件从Available Widgets容器移动到我的侧边栏时,我都没有获得实际的字段名称,而是获得了字段名称的一种占位符.

所以,而不是得到这样的东西:

<input 
  type="hidden" 
  name="widget-hours-widget[2][order][]"
  value="L48">
Run Code Online (Sandbox Code Playgroud)

我明白了:

<input 
  type="hidden" 
  name="widget-hours-widget[__i__][order][]" 
  value="L26">
Run Code Online (Sandbox Code Playgroud)

单击保存按钮后,field_name将为我提供窗口小部件的正确名称,widget-hours-widget[2]而不是占位符 …

wordpress

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