小编Luc*_*zzi的帖子

在AngularJS组件中将事件从父级传递给子级

在我正在研究的新项目中,我已经开始使用组件而不是指令.

但是,我遇到了一个问题,我找不到具体的标准方法来做到这一点.

从孩子到父母通知事件很容易,您可以在我的下面的plunkr上找到它,但是从父母到孩子通知事件的正确方法是什么?

Angular2似乎通过使用类似的东西解决了这个问题:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-to-child-local-var 但是我没有tink有可能定义一个子组件的"指针",就像#timer的例子一样

为了保证可以轻松转换为Angular2,我想避免:

  • 事件发射(从示波器发射和广播)
  • 使用来自子节点的require(然后将一个回调添加到parent..UGLY)
  • 使用单向绑定,在子项中注入范围,然后"监视"此属性..更多UGLY

示例代码:

var app = angular.module('plunker', []);

app.controller('RootController', function() {
});

app.component('parentComponent', {
  template: `
    <h3>Parent component</h3>
    <a class="btn btn-default btn-sm" ng-click="$ctrl.click()">Notify Child</a>
    <span data-ng-bind="$ctrl.childMessage"></span>
    <child-component on-change="$ctrl.notifiedFromChild(count)"></child-component>
  `,
  controller: function() {
    var ctrl = this;
    ctrl.notifiedFromChild = function(count){
      ctrl.childMessage = "From child " + count;
    }
    ctrl.click = function(){
    }
  },
  bindings: {
  }
});

app.component('childComponent', {
  template: `
    <h4>Child component</h4>
    <a class="btn btn-default btn-sm" ng-click="$ctrl.click()">Notify Parent</a>
  `,
  controller: function() …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular-directive angular-components

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

如何使用gapi和resumable上传文件将文件上传到Google云端硬盘?

我正在尝试按照指南通过Google Api在Google云端硬盘上进行可恢复上传.

这是我的代码,您可以看到它在指南要求时发出2个请求,第一部分创建元数据,然后我们使用该位置开始使用第一个请求创建的会话上载文件.

        const file = new File(['Hello, world!'], 'hello world.txt', { type: 'text/plain;charset=utf-8' });
        const contentType = file.type || 'application/octet-stream';

        const reqMetadata = gapi.client.request({
            'path': 'upload/drive/v3/files',
            'method': 'POST',
            'params': { 'uploadType': 'resumable' },
            'headers': {
                'X-Upload-Content-Type': file.type,
                'X-Upload-Content-Length': file.size,
                'Content-Type': 'application/json; charset=UTF-8'
            },
            'body': {
                'name': file.name,
                'mimeType': contentType,
                'Content-Type': contentType,
                'Content-Length': file.size
            }
        });

        reqMetadata.execute((respMetadata, rawRespMetadata: any) => {
            const locationUrl = JSON.parse(rawRespMetadata).gapiRequest.data.headers.location;

            const reader = new FileReader();

            reader.onload = (e) => {
                const reqFile = …
Run Code Online (Sandbox Code Playgroud)

javascript google-api gapi

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

使用自定义参数的Rivets.js事件处理程序

我刚刚开始Rivets.js,看起来很有希望作为简单的数据绑定框架.

我已经到了我不知道如何将"自定义参数"传递给rv-on-click活页夹的地步,所以我试图从这个想法:https://github.com/mikeric/rivets/pull/34

我的代码:

rivets.binders["on-click-args"] = {
  bind: function(el) {    
    model = this.model;
    keypath = this.keypath;

    if(model && keypath)
    {
        var args = keypath.split(' ');
        var modelFunction = args.shift();
        args.splice(0, 0, model);

        var fn = model[modelFunction];            
        if(typeof(fn) == "function")
        {
            this.callback = function(e) {
                //copy by value
                var params = args.slice();
                params.splice(0, 0, e);                
                fn.apply(model, params);
            }

            $(el).on('click', this.callback);
        }                        
    }
  },

  unbind: function(el) {
    $(el).off('click', this.callback);
  },

  routine: function(el, value) {    
  } …
Run Code Online (Sandbox Code Playgroud)

javascript rivets.js

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

通用方法问题/错误?

有人能解释一下这个问题吗?

让这个工作的唯一方法是使用CorrectName中的虚拟,然后在Derived中覆盖,而不是new关键字,但是,为什么会发生这种情况?

为什么如果我通过泛型投射它给我Base值,如果我直接投射它给我Derived值?((输出如下))

谢谢你们,正如我所说的,我已经得到了"解决方案",但我想理解

    class Base
    {
        public string Name { get; set; }
        public string CorrectName { get { return Name; } }
    }
    class Derived : Base
    {
        public new string CorrectName { get { return "NEW" + Name; } }
    }
    static void Main(string[] args)
    {
        List<Derived> container = new List<Derived>();

        var d = new Derived() { Name = "NameDerived2" };

        container.Add(d);

        Search<Derived>(container);
        Console.ReadLine();
    }

    static void Search<T>(List<T> list) where T : Base
    {
        foreach (var …
Run Code Online (Sandbox Code Playgroud)

c# generics

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

我如何制作瀑布Q承诺?

我们以此为例:

  • 我在一个数组网址中有3个网址
  • require函数返回一个只发出$ http调用的promise

这是一个工作代码,但由于数组可以是'1到n',这显然不是我想要的.我需要3个需求作为瀑布,而不是并行.在最后的承诺中,我需要解决最终的承诺,即延迟变更.

require(urls[0]).then(function () {                            
    require(urls[1]).then(function () {                                
        require(urls[2]).then(function () {                                    
            deferred.resolve();
        });
    });
})
Run Code Online (Sandbox Code Playgroud)

这种方法不起作用,因为这将并行执行所有$ http调用.

var promises = [];
angular.forEach(urls, function (value) {
    promises.push(require(value));
});
$q.all(promises).then(function () {
    deferred.resolve();
});
Run Code Online (Sandbox Code Playgroud)

是否有一个很好的方法来执行for/cycle?

javascript promise deferred angularjs q

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

网络摄像头分辨率检测

我简直无法相信我在谷歌上发现了什么,我开始认为这可能是一个DUMB问题,但我不得不问.

我想通过网络摄像头支持MAXIMUM RESOLUTION,我该怎么做?

这是我的实际代码:

 // Maximum amount of bandwidth that the current 
 // outgoing video feed can use, in bytes per second.
 var bandwidth:int = 0; 
 var quality:int = 100; // This value is 0-100 with 1 being the lowest quality. 


 var cam:Camera = Camera.getCamera();
 if(cam==null)
  writeErrorPopup(NOCAMERA_ERR);
 else
 {
  cam.addEventListener(StatusEvent.STATUS,statusHandler);
  function statusHandler(evt:StatusEvent):void
  {
   if(cam.muted)
   {   
    writeErrorPopup(CAMPERMISSION_ERR);
   }
   else
   {   
    trace(cam.width);
   }
  }    

 cam.setQuality(bandwidth, quality);
 //cam.setMode(640,480,30,false); 
 // setMode(videoWidth, videoHeight, video fps, favor area)
Run Code Online (Sandbox Code Playgroud)

我所理解的是:

  • 任何网络摄像头的默认setMode将其分辨率设置为160x120,实际上跟踪会返回160x120的值.

  • 如果我取消注释640x480 setmode,跟踪返回640x480值,这是好的,但这是一个静态值,我想了解WHICH是网络摄像头分辨率..

任何提示?

flash webcam actionscript

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