我有一个ActivityObserver,正在观察tasks,并有一个after_update回调.
我想测试是否已修改特定属性update.
是否有Rails方法来比较主题的属性与更新前的内容,或检查它们是否已更改?
如果我有一个对象,我希望能够观察其他几个可观察对象,而不是所有相同的类型.例如,我希望A能够观察B和C.B和C完全不相关,除了它们都实现了Observable.
显而易见的解决方案是在更新方法中使用"if instanceof",但很快就会变得混乱,因此我想知道是否还有其他方法?
我已经建立了一个监听sales_convert_quote_to_order事件的观察者.事件被触发,我只想为订单的属性添加值.该属性已设置 - 在日志中打印 - 但magento不保存订单.我做错了什么?
Observer.php
public function addLangToOrder($observer){
Mage::log('catching convert_quote_to_order_after');
$order = $observer->getEvent()->getOrder();
$order->setCustomerLanguage(Mage::app()->getStore()->getCode());
$order->save();
Mage::log($order->getCustomerLanguage());
}
Run Code Online (Sandbox Code Playgroud)
config.xml中
<events>
<sales_convert_quote_to_order>
<observers>
<accustomer>
<type>singleton</type>
<class>Ac_Customer_Model_Observer</class>
<method>addLangToOrder</method>
</accustomer>
</observers>
</sales_convert_quote_to_order>
</events>
Run Code Online (Sandbox Code Playgroud)
我已customer_language通过安装脚本添加了该属性
$customer_lang = 'customer_language';
$installer->addAttribute('order', $customer_lang, array('type'=>'varchar'));
Run Code Online (Sandbox Code Playgroud)
该customer_language列存在于sales_flat_order表中.但它没有得到保存.
我正在使用Magento 1.4.1.1
我需要在我自己的代码库(自定义PHP库)中集成一个事件调度程序,所以我看看Symfony2和Zend Framework 2正在做什么.
显然,没有用于调度事件的共享接口,因为两个框架都有不同的需求并决定实现自己的代码......所以我有点迷失:我不想重新发明我的个人轮子.
用于实现观察者模式的SPL接口可能有点幼稚,所以我在这里问你:你会做什么?
编辑
由于目前尚不清楚......我想重新使用现有的ED,让开发人员将其注入我的库中.
假设您使用调度程序开发了一个lib,并且您知道您的lib将成为Symfony Bundle的一部分并在ZF项目中重复使用:您肯定希望重新使用Symfony和ZF调度程序,而不是您自己的.
因此,我一直在寻找在主流库中实现的现有调度程序的共享接口,但听起来似乎没有解决方案.
php zend-framework event-dispatching symfony observer-pattern
这是SMS观察者代码.我需要检查只发送短信.当我使用时,content://sms/我得到了结果.但是当我使用时为什么不能得到结果content://sms/sent/呢?我正在使用Android 2.1.
import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
public class smsSentService extends Service
{
ContentResolver contentResolver;
Uri uri=Uri.parse("content://sms/sent");
Handler handler;
@Override
public IBinder onBind(Intent arg0)
{
return null;
}
@Override
public void onCreate()
{
contentResolver=getContentResolver();
contentResolver.registerContentObserver(uri, true, new contentObserver(handler));
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId)
{
super.onStart(intent, startId);
}
@Override
public void onDestroy()
{
super.onDestroy();
}
public class contentObserver extends ContentObserver …Run Code Online (Sandbox Code Playgroud) 我需要跟踪tableView.contentOffset.y是否可以将观察者添加到tableView.contentOffset?
我认为这是不可能的,因为contentOffset不会继承NSObject类.
还有其他解决办法吗?
我做了一些谷歌搜索,是的,我知道有关这两者之间的差异的问题之前已经在stackoverflow和整个网络上被问过.但我主要找到措辞有问题的答案,这可能令人困惑.
我的问题是,如果有人在这里可以为我提供两个中介和观察者模式的视觉示例,可以清楚地展示两者之间的差异.在Javascript中.谢谢!
我目前正在使用Java的Observer/Observable Pattern,我想知道:为什么在当前的实现中需要setChanged()方法?我知道它就在这里,所以我们只需要在治疗结束时调用notifyObservers()一次.
这样,如果我们想要我们可以使用clearChanged()回滚任何更改.但是,我们仍然可以在我们自己的实现中进行所有检查,并且只在我们绝对想要更新Observers 时调用notifyObservers().
我可能错过了一些东西,但我不明白他们为什么不这样简化它.有任何想法吗?
我正在使用MaterialDrawer库为我的应用程序创建一个简单的抽屉,库中的一些类实例需要在调用时传递给它们的字符串.一个例子是这个IProfile类:
IProfile profile = new ProfileDrawerItem().withName("John Doe");
其中withName()方法接受的字符串.
我已经创建了一个类MyObservable.java(扩展Observable)类,我打算用它来获取要在我MainActivity实现MaterialDrawer库的数据.在这个类中,我有一个方法implementData(),它可以从我的firebase数据库中获取我需要的内容.
这就是它的样子:
public class MyObservable extends Observable {
// Attach our firebase reference...
Firebase userRef = new Firebase("https://myApp.firebaseio.com/users");
AuthData authData;
public String username = "";
public String email = "";
public void changeUsername(String username) {
this.username = username;
setChanged();
notifyObservers(username);
}
public void implementData(){
// Get the authentication data of our user from the reference.
authData = userRef.getAuth();
// This …Run Code Online (Sandbox Code Playgroud) 随着Java 9的到来,Observable类和Observer接口现已弃用.
[Observable]和Observer接口已被弃用.Observer和Observable支持的事件模型非常有限,Observable提供的通知顺序未指定,状态更改不与通知一一对应.对于更丰富的事件模型,请考虑使用java.beans包.
它建议使用该java.beans包,但是如何使用它来创建一个模拟Observer模式的事件处理程序呢?
observer-pattern ×10
java ×4
android ×2
observable ×2
php ×2
attributes ×1
firebase ×1
ios ×1
java-9 ×1
javabeans ×1
javascript ×1
magento ×1
mediator ×1
sms ×1
symfony ×1
uitableview ×1