标签: observers

是不是在观察者中访问会话?

我想在Ruby on Rails应用程序中记录用户的操作.

到目前为止,我有一个模型观察器,它在更新和创建后将日志插入数据库.为了存储哪个用户执行了记录的操作,我需要访问会话,但这是有问题的.

首先,它打破了MVC模型.其次,技术范围从hackish到outlandish,甚至可能甚至将实现绑定到Mongrel服务器.

什么是正确的方法?

ruby session logging ruby-on-rails observers

7
推荐指数
2
解决办法
3096
查看次数

在第一个视图控制器中添加"addObserver"(NSNotificationCenter),在第二个视图中处理

我看到了一些关于在同一个类中添加观察者和句柄的例子,但我想知道的是,是否可以在第一个视图控制器中添加观察者并在第二个视图控制器中处理它?

我希望不断从第一个视图控制器发送距离并在第二个控制器中处理它.第二个视图控制器添加为子视图:addSubview,addChildViewController.

它就像android中的广播一样.

objective-c observers nsnotification nsnotificationcenter ios

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

ember js组件观察器不起作用

我在emberjs组件中有一个场景,其中观察不会被击中.我发现原因是"当设置了被观察的组件属性时,组件尚未插入."

我的问题是,在ember js中这可以用更好的方式处理吗?

更好的解释可以在下面的jsbin中找到.

不工作的场景

工作方案

javascript observers ember.js

7
推荐指数
1
解决办法
4820
查看次数

使用weak_ptr实现Observer模式

到目前为止我所拥有的是:

Observer.h

class Observer
{
public:
    ~Observer();
    virtual void Notify() = 0;
protected:
    Observer();
};

class Observable
{
public:
    ~Observable();
    void Subscribe( std::shared_ptr<Observer> observer );
    void Unsubscribe( std::shared_ptr<Observer> observer );
    void Notify();
protected:
    Observable();
private:
    std::vector<std::weak_ptr<Observer>> observers;
};
Run Code Online (Sandbox Code Playgroud)

Observer.cpp

void Observable::Subscribe( std::shared_ptr<Observer> observer )
{
    observers.push_back( observer );
}

void Observable::Unsubscribe( std::shared_ptr<Observer> observer )
{
    ???
}

void Observable::Notify()
{
    for ( auto wptr : observers )
    {
        if ( !wptr.expired() )
        {
            auto observer = wptr.lock();
            observer->Notify();
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c++ observers weak-ptr observer-pattern c++11

7
推荐指数
1
解决办法
1857
查看次数

在Magento 2中使用观察者应用自定义促销规则

我在Magento 2中创建了新表,用于存储自定义promorules,现在我已经为事件创建了观察者controller_action_predispatch_checkout_cart_couponPost,在观察者中我想检查用户是否输入了任何自定义规则,然后根据该规则应用折扣.

以下是我的代码:

<?php
namespace Webkul\Grid\Observer;

use Magento\Framework\Event\ObserverInterface;

class coupenAppliedAfter implements ObserverInterface
{
    /**
     * @var ObjectManagerInterface
     */
    protected $_objectManager;

    /**
     * @param \Magento\Framework\ObjectManagerInterface $objectManager
     */
    public function __construct(
        \Magento\Framework\ObjectManagerInterface $objectManager
    ) {
        $this->_objectManager = $objectManager;
    }

    /**
     * customer register event handler
     *
     * @param \Magento\Framework\Event\Observer $observer
     * @return void
     */
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        // get enetered coupen code
        $controller = $observer->getControllerAction();
        $couponCode = $controller->getRequest()->getParam('coupon_code');

        $objectManager =   \Magento\Framework\App\ObjectManager::getInstance();
        $connection = $objectManager->get('Magento\Framework\App\ResourceConnection')->getConnection('\Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION'); 
        // get list of …
Run Code Online (Sandbox Code Playgroud)

php observers magento2 cart-rules magento2.1

7
推荐指数
1
解决办法
551
查看次数

GoRouter 的 RouteObserver 捕获 go/goNamed 转换

我一直在通过第三方集成(例如SentryNavigatorObserverFirebaseAnalyticsObserver)来分析不同的导航观察者,以使默认情况下没有它的工具相同。但我注意到这些都没有真正捕获所有路线转换。当他们在相应的控制台中显示数据时我看到了它。是的,它适用于push/ ,但不会跟踪pop同一级别内的任何转换。go这很烦人。有人知道解决的方法吗?


例如,

观察到从/page到 的转变。/page/detail

/pageA从到 的过渡/pageB则不是。

routes observers dart flutter flutter-go-router

7
推荐指数
2
解决办法
7215
查看次数

如何从Ember.js中另一个ArrayController的选定值更新一个ArrayController的内容

我在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必须知道其他控制器的情况下解决这个问题.这应该可以通过观察者,绑定甚至通过计算实现,但我不知道从哪里开始.任何帮助将不胜感激.

javascript arrays binding observers ember.js

6
推荐指数
1
解决办法
3137
查看次数

C++自己的观察者模式

我设计应该以这种方式工作的观察者模式:观察者调用AddEventListener的方法EventDispatcher,并传递一个字符串,它是的名称event,PointerToItselfPointerToItsMemberMethod

之后event发生在EventDispatcher; 它查看订阅列表,如果有一些,则分配给此事件调用该action方法observer.

我来这里了EventDispatcher.h.小心包含一些伪代码.

这是两个问题:

  1. 如何定义actionin 的类型struct Subscription
  2. 我正在朝着正确的方向前进吗?

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)

c++ pointers function-pointers observers observer-pattern

6
推荐指数
1
解决办法
1331
查看次数

LiveData 观察者触发两次,即使使用 viewLifecycleOwner

我正在与一个两次触发的 LiveData 观察者作斗争。在我的片段中,我观察LiveData如下,使用viewLifeCycleOwnerasLifeCycleOwner

private lateinit var retailViewModel: RetailsViewModel

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        retailViewModel =  ViewModelProviders.of(this).get(RetailsViewModel::class.java)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

  retailViewModel.retailLiveData.observe(viewLifecycleOwner, Observer {
    // updating UI here, but firing twice!
  }

  retailViewModel.getRetailById(retail.id)
} 
Run Code Online (Sandbox Code Playgroud)

这是我的视图模型:

class RetailsViewModel(override val service: MyFoodyApiService = MyFoodyApiService.service) :
    BaseViewModel(service) {

    var retailLiveData: MutableLiveData<Retail> = MutableLiveData()

    fun getRetailById(id: Int) {
        scope.launch {
            try {
                val response =
                    service.getRetailById(authString, id).await()
                when (response.isSuccessful) {
                    true -> {
                        response.body()?.let { …
Run Code Online (Sandbox Code Playgroud)

android observers android-lifecycle kotlin android-livedata

6
推荐指数
1
解决办法
1784
查看次数

ResizeObserver 是否最初在页面加载时调用?

似乎当我在 DOMContentLoaded 事件上将节点传递给 ResizeObserver.observe() 时,它会立即调用。这是否被视为正常行为?

javascript dom observers

6
推荐指数
1
解决办法
614
查看次数