我有两个问题请:
我正在使用淘汰赛(我是KO noob sry)并且我想在点击事件中为特定的淘汰赛观察分配一个值,但这应该仅在点击事件本身确定(并且我将传递给的值) data-bind = click)...可以这样做吗...我可以在其名称(字符串值)上获取knockout observable变量,而不必知道哪个observable我将分配一个值预先?
并且,其次不那么重要,如果存在这样的函数ko.ObservableByName(stringName),可以以某种方式使用它并在页面加载时分配多个选择项的预选择.请问如何?
我试过这样做...我使用了data-bind ="click:loadData.bind($ data,' param1 ',' param2 ')"然后我就能得到那些param1和param2字符串通过在我的knockout viewmodel中构造一个事件处理程序的值,该事件处理程序沿着以下行行:
self.loadData = function (src, dest) {
//dest is 'param1', src is 'param2', both are stings
if (src == 'param1')
self.p1observable($('#' + dest).val());
else
self.p2observable($('#' + dest).val());
}
Run Code Online (Sandbox Code Playgroud)
我最大的问题是我必须用已经指定的p1/p2 observable构造函数并在其中进行硬编码,但实际上我想让param1和param2用作某些名称或引用的名称.我的observable,然后我可以随意传递(除了要分配的值,或者更好的另一个observable我想将值复制到第一个),因此我可以在点击中分配传入的值函数直接调用我选择的一个observable(并没有大量这样的小函数)......
也许我会以错误的方式去做?也许我根本不应该传递字符串值...也许我应该尝试传入一个可观察对象,但是如何在数据绑定中做到这一点,你只是编写myViewModel.myObservable或类似的东西吗?
我试图使用.net Observable类实现一个简单的Observer模式.我的代码看起来像这样:
Observable.FromEventPattern<PropertyChangedEventArgs>(
Instance.User,
"PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "FirstName")
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(search => OnFirstNameChanged(search.EventArgs));
Observable.FromEventPattern<PropertyChangedEventArgs>(
Instance.User,
"PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "LastName")
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(search => OnLastNameChanged(search.EventArgs));
Run Code Online (Sandbox Code Playgroud)
我希望观察者在后台线程上运行,但是我希望它们都在相同的后台线程上运行(对于我们真正的实现,将每个侦听器放在不同的线程上会非常复杂).
即我希望所有的OnXXXChanged逻辑都在UI线程以外的线程上执行,但是Observing我想确保它们在同一个线程上以正确的顺序运行,而不是在整个线程池上运行.
如何修改上述内容?
另外,在某种程度上相关的说明,是否有任何好的示例代码示例使用Observable该类来实现此模式?
所以我在遵循一个非常简单的d3教程时遇到了问题.本质上我试图通过将数据绑定到当前的svg圈元素然后调用enter.append来添加SVG圈元素如下所示:
var svg =d3.select("body").selectAll("svg");
var circle = svg.selectAll("circle");
var w=window.innerWidth;
console.log(circle);
circle.data([500,57,112,200,600,1000]);
circle.enter().append("circle")
.attr("cy",function(d) {
return (d)
})
.attr("cx", function(i){
return (i*100)
})
.attr("r", function(d) {
return Math.sqrt(d);
})
Run Code Online (Sandbox Code Playgroud)
这似乎会增加3个新的圆形元素(因为我已经创建了3个).但是,我没有添加这3个新的圆形元素,而是遇到了这个错误:
未捕获的TypeError:对象[对象SVGCircleElement],[objectSVGCircleElement],[对象SVGCircleElement]没有方法'enter'
我用段落做了基本相同的事情,它似乎工作正常:
var p =d3.select("body").selectAll("p")
.data([4, 8, 15, 16, 23, 42])
.text(function(d) { return "I'm number " + d + "!"; });
//Enter
p.enter().append("p")
.text(function(d) { return "I'm number " + d + "!"; })
.style("color", function(d, i) {
return i % 2 ? "#000" : "#eee";
});
Run Code Online (Sandbox Code Playgroud)
但是,只要我尝试将SVG元素添加到其中,我就会继续得到相同的错误.
看起来应该只是语法错误或其他什么,但我已经完成了5万亿次代码,并且找不到任何东西. …
当Label文本值以end括号结束时."从右到左"的结果是错误的,例如.
Text: ABC (123) Result: (ABC (123 Expected Result: ABC (123)
有没有解决方案来解决它?
我想充分利用Reactive Extensions for .NET(Rx),并希望得到一些关于做一些基本任务的意见.为了说明我正在尝试做什么,我有一个人为的例子,我有一个带有异步事件的外部组件:
class Component {
public void BeginStart() { ... }
public event EventHandler Started;
}
Run Code Online (Sandbox Code Playgroud)
该组件通过调用启动BeginStart().此方法立即返回,稍后,当组件完成启动时,Started事件将触发.
我想通过包装组件来创建一个同步启动方法,并等待Started事件被触发.这是我到目前为止所提出的:
class ComponentWrapper {
readonly Component component = new Component();
void StartComponent() {
var componentStarted =
Observable.FromEvent<EventArgs>(this.component, "Started");
using (var startedEvent = new ManualResetEvent(false))
using (componentStarted.Take(1).Subscribe(e => { startedEvent.Set(); })) {
this.componenet.BeginStart();
startedEvent.WaitOne();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想摆脱它ManualResetEvent,我希望Rx有一个解决方案.但是怎么样?
我正在使用QuickFIX和C#来创建一个FIX接受器(服务器).我希望客户端(FIX启动器)使用用户名和密码登录.但是,我不确定如何在QuickFIX中做到这一点.
通过调试QuickFIX源代码,我发现了以下事件序列:
Session::verify以验证登录.Session::verify 将执行各种检查,如comp ID和序列号,并在某些时候确定收到的登录是有效的.Session::verify然后将调用Application::fromAdmin回调,我认为这是自定义登录等内容的地方.如何在接受器中自定义FIX登录过程?修改QuickFIX代码是我唯一的选择吗?
在C++中,例如fmod(-2,2)返回-0.表达式-0 == 0是真的,但位不同.有什么样的东西-0应该0是以不同的方式表达的目的是什么?是-0使用完全相同的方式0在任何计算?
例如,我有两个"接口"和类类型:
class IPlugin
{
public:
virtual void Load(void) = 0;
virtual void Free(void) = 0;
};
class IFoo
{
public:
virtual void Foo(void) = 0;
};
class Tester: public IPlugin, public IFoo
{
public:
Tester() {};
~Tester() {};
virtual void Load()
{
// Some code here
}
virtual void Free()
{
// Some code here
}
virtual void Foo(void)
{
// Some code here
}
};
Run Code Online (Sandbox Code Playgroud)
vtab实际上具有哪种结构类型Tester?而如何将 dynamic_cast运营商的行为(我的意思是如何dynamic_cast操作员将扫描vtab为有效的引用类型皈依)的表达式:
Tester* t = new Tester();
IPlugin* plg …Run Code Online (Sandbox Code Playgroud) 假设我有以下代码:
var X = XElement.Parse (@"
<ROOT>
<MUL v='2' />
<MUL v='3' />
</ROOT>
");
Enumerable.Range (1, 100)
.Select (s => X.Elements ()
.Select (t => Int32.Parse (t.Attribute ("v").Value))
.Aggregate (s, (t, u) => t * u)
)
.ToList ()
.ForEach (s => Console.WriteLine (s));
Run Code Online (Sandbox Code Playgroud)
什么是.NET运行时实际在这里做什么?难道解析和转换属性整数各100次,还是足够聪明弄清楚,它应该缓存解析值,而不是重复计算的范围中的每个元素?
而且,我怎么会自己搞清楚这样的事情呢?
在此先感谢您的帮助.
我有一个C++代码,我正在尝试迁移到C#.在那里,在C++上,我使用以下宏定义进行调试.
#define CODE_LOCATION(FILE_NAME, LINE_NUM, FUNC_NAME) LINE_NUM, FILE_NAME, FUNC_NAME
#define __CODE_LOCATION__ CODE_LOCATION(__FILE__, __LINE__, __FUNCTION__)
Run Code Online (Sandbox Code Playgroud)
C#中是否有类似的结构?我知道C#中没有宏,但有没有其他方法可以在执行期间获取当前文件,行和函数值?
c# ×6
.net ×4
c++ ×2
observable ×2
clr4.0 ×1
d3.js ×1
fix-protocol ×1
knockout.js ×1
linq ×1
quickfix ×1
svg ×1
vtable ×1
winforms ×1