我在ember.js中遇到以下问题.子控制器依赖于父控制器中的选定值来确定其内容.在数据库中,子项具有parent_id引用.
App.parentsController = Em.ArrayController.create({
content: [],
selected: null
});
App.sonsController = Em.ArrayController.create({
// the value of content depends on the id of
// the selected item in the parentsController
content: [],
selected: null
});
App.daughtersController = Em.ArrayController.create({
// the value of content depends on the id of
// the selected item in the parentsController
content: [],
selected: null
});
Run Code Online (Sandbox Code Playgroud)
我更愿意在没有parentController必须知道其他控制器的情况下解决这个问题.这应该可以通过观察者,绑定甚至通过计算实现,但我不知道从哪里开始.任何帮助将不胜感激.
我设计应该以这种方式工作的观察者模式:观察者调用AddEventListener
的方法EventDispatcher
,并传递一个字符串,它是的名称event
,PointerToItself和PointerToItsMemberMethod
之后event
发生在EventDispatcher
; 它查看订阅列表,如果有一些,则分配给此事件调用该action
方法observer
.
我来这里了EventDispatcher.h
.小心包含一些伪代码.
这是两个问题:
action
in 的类型struct Subscription
?PS:不,我不会使用boost
或任何其他库.
#pragma once
#include <vector>
#include <string>
using namespace std;
struct Subscription
{
void* observer;
string event;
/* u_u */ action;
};
class EventDispatcher
{
private:
vector<Subscription> subscriptions;
protected:
void DispatchEvent ( string event );
public:
void AddEventListener ( Observer* observer …
Run Code Online (Sandbox Code Playgroud) 我正在尝试观察路线更改,以便在渲染后应用一些常见操作.我们的想法是拥有onload
与之类似的功能,但是当我们使用单页应用时,需要在每次路由更改时触发.(可以限定为新视图)
我找到了如何观察currentPath的变化:
App.ApplicationController = Ember.Controller.extend({
currentPathDidChange: function() {
prettyPrint()
}.observes('currentPath');
});
Run Code Online (Sandbox Code Playgroud)
虽然这在某些情况下效果很好,但是当路由发生变化时会触发它,但仍然要提前应用内容更改,因为它似乎在内容呈现之前附加.
有关实现这一目标的最佳实践的任何想法?
我正在尝试将信息从我的magento安装发送到dropshipper。显然,这应该在付款完成后立即进行。据我所知,Magento的观察员应在付款完成后被解雇。
我有以下文件,但观察者似乎从未被解雇:app / etc / modules / SPB_Coreextended.xml:
<?xml version="1.0"?>
<config>
<modules>
<SPB_Coreextended>
<active>true</active>
<codePool>local</codePool>
</SPB_Coreextended>
</modules>
</config>
Run Code Online (Sandbox Code Playgroud)
应用程序/代码/本地/SPB/Coreextend/etc/config.xml:
<?xml version="1.0"?>
<config>
<modules>
<SPB_Coreextended>
<version>0.2.0</version>
</SPB_Coreextended>
</modules>
<frontend>
<routers>
<checkout>
<args>
<modules>
<SPB_Coreextended before="Mage_Checkout">SPB_Coreextended_Checkout</SPB_Coreextended>
</modules>
</args>
</checkout>
</routers>
</frontend>
<global>
<models>
<SPB_Coreextended>
<class>SPB_Coreextended_Model</class>
</SPB_Coreextended>
</models>
<events>
<sales_order_payment_pay>
<observers>
<SPB_Coreextended>
<type>singleton</type>
<class>SPB_Coreextended/Observer</class>
<method>sendOrder</method>
</SPB_Coreextended>
</observers>
</sales_order_payment_pay>
</events>
</global>
</config>
Run Code Online (Sandbox Code Playgroud)
应用程序/代码/本地/ SPB / Coreextend /模型/Observer.php:
<?php
class SPB_Coreextended_Model_Observer
{
public function sendOrder($observer) {
Mage::log("New order");
$order = $observer->getInvoice()->getOrder(); // Mage_Sales_Model_Order
Mage::log("New order"); …
Run Code Online (Sandbox Code Playgroud) 我只是在订单付款后才尝试向第三方发送订单,现在已将其设置为"处理"状态.什么是最好的观察者用来设置它适用于所有支付类型?
看完几个来源之后,似乎:
sales_order_invoice_pay
Run Code Online (Sandbox Code Playgroud)
应该适用于所有付款方式,但似乎已在Magento 1.9上删除:http ://rabee.me/codes/magento/cheatsheet/1.9/ (此列表不完整,请查看以下更新)
另一种选择是:
'sales_order_payment_pay'
Run Code Online (Sandbox Code Playgroud)
但是,当我测试它将付款方式设置为"支票/汇票"时,我使用订单>发票>提交发票在后端生成发票后不会触发
此方法仅使用其他付款方式调用吗?(贝宝/ authorize.net)
更新:
阅读之后:另一个问题似乎是保证我在付款(在线或离线)之后输出订单的唯一方法是在创建发票时捕获,而对于Magento 1.9,正确的观察者是:
sales_order_invoice_register
Run Code Online (Sandbox Code Playgroud)
在线方法paypal/authorize.net付款后是否自动创建和发送发票?在沙箱/测试模式下使用它们时仍然如此吗?
更新2:
经过大量测试后,似乎这'sales_order_invoice_pay'
是用于实现我所需要的正确方法.
我想知道如何在模型观察者身上防止某个动作,例如:
$model->update(['foo' => 'bar']);
Run Code Online (Sandbox Code Playgroud)
在观察者中
public function updating(Model $model)
{
if($model->isDirty('foo') {
// Prevent action from happening
}
}
Run Code Online (Sandbox Code Playgroud)
先感谢您.
在我的组件中,我循环访问一个数据属性(它是一个对象),以检查是否设置了任何值。其中一个值是一个数组,但是当它为空并且我控制台记录它的值时,它会返回
[__ob__: Observer]
。
如果我测试它是数组还是对象,它们都不会返回 true。仅当向其中添加元素时,它才会被识别为数组。
我还尝试测试它是否是一个函数 ( entry[1] === "function"
) - 不正确。
那么什么是[__ob__: Observer]
以及如何进行检查来识别这个特定的东西呢?我需要为此破例。
我想观察房间数据库中的一行。一段时间后它会改变。但是当我们点击停止按钮时,它需要停止观察表单数据库,当点击开始按钮时,它会再次开始观察。
我当前的代码是创建观察者
private lateinit var recordObserver: Observer<Ride>
recordObserver= Observer<Ride> { rides ->
if (rides != null)
updateData(rides)
else
setDataToZero()
}
when(isState){
Constants.isrunning->{//need to start observer}
Constants.Stop->{//need to stop observer}
}
Run Code Online (Sandbox Code Playgroud) 目标: 我想对页面加载时相交的一组元素执行一个操作,并单独处理所有其他元素(当前不相交)。
问题: 每个观察者都有自己的回调,我无法同步获取一组观察者的结果。
可能的解决方案: 如果可以首先询问相交观察者该元素是否相交。据我所知,没有这样的功能,所以每个想法或帮助将不胜感激。
我正在阅读蓝牙 LE 入门文档,偶然发现了下表:
我的疑问是,如果观察者的唯一工作是接收 BLE 数据而不传回任何数据,那么接收器怎么可能是可选的。不应该是其他方式吗?发射器是可选的而接收器是强制性的?
PS 我知道,在硬件中,BLE 无线电实现了 Tx 和 Rx,并由应用程序使用其中之一或两者。
我正在阅读 BLE 规范文档,尚未实现任何内容,但是这个观察者设备定义对我来说没有意义。我希望观察者有一个 Rx 强制和 Tx 可选。