簡體   English   中英

Backbone - 從子視圖觸發父視圖事件

[英]Backbone - Trigger the parent view event from child view

我試圖從其子視圖觸發父視圖的事件。 但似乎父視圖的事件沒有被觸發。

以下是我的代碼示例:

<!DOCTYPE html>
<html>

<head>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script>
    <script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>

    <script>

    MySubView = Backbone.View.extend({
        id : "MySubView",

        initialize: function() {
          console.log("pro1");

          this.trigger("testGo", "test");
        }
    });

    MyView = Backbone.View.extend({
        id : "MyView",

        initialize: function() {
          console.log("pro");
          this.subview = new MySubView();
          this.subview.listenTo("testGo", this.addFoo, this);
        },

        addFoo: function() {
          console.log("ok");
          alert("ok");
        }
  });

  new MyView();

</script>

</head>

<body>
</body>
</html>

我試圖從谷歌搜索找到的許多解決方案中得到提示,但似乎我在某個地方受到了打擊。 我發現的一些選項是:

1 / 如何在backbonejs和requirejs中從子視圖觸發事件到父視圖

2 / Backbone:如何在父視圖中觸發方法

問題是你使用listenTo錯了。

anObject.listenTo(anotherObject, 'forSomeEvent', function () { console.log('do something'); });

所以,在你的情況下,你應該這樣做:

 MyView = Backbone.View.extend({
        id : "MyView",

        initialize: function() {
          console.log("pro");
          this.subview = new MySubView();
          this.listenTo(this.subview, 'testGo', this.addFoo);
        },

        addFoo: function() {
          console.log("ok");
          alert("ok");
        }
  });

希望能幫助到你!

你的listenTo用法略有listenTo

簽名是object.listenTo(otherObject, event, callback)所以你需要這樣的東西:

this.listenTo(this.subview, "testGo", this.addFoo);

它告訴thisthis.subview的事件testGo並調用this.addFoo在觸發事件

嘗試這個

this.listenTo(this.subview, "testGo",this.addFoo);

簽名:

     object.listenTo(other, event, callback)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM