在我正在研究的新项目中,我已经开始使用组件而不是指令.
但是,我遇到了一个问题,我找不到具体的标准方法来做到这一点.
从孩子到父母通知事件很容易,您可以在我的下面的plunkr上找到它,但是从父母到孩子通知事件的正确方法是什么?
Angular2似乎通过使用类似的东西解决了这个问题:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-to-child-local-var 但是我没有tink有可能定义一个子组件的"指针",就像#timer的例子一样
为了保证可以轻松转换为Angular2,我想避免:
示例代码:
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) 我正在尝试按照此指南通过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) 我刚刚开始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) 有人能解释一下这个问题吗?
让这个工作的唯一方法是使用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) 我们以此为例:
这是一个工作代码,但由于数组可以是'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?
我简直无法相信我在谷歌上发现了什么,我开始认为这可能是一个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是网络摄像头分辨率..
任何提示?
javascript ×4
angularjs ×2
actionscript ×1
c# ×1
deferred ×1
flash ×1
gapi ×1
generics ×1
google-api ×1
promise ×1
q ×1
rivets.js ×1
webcam ×1