[英]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>
我試圖從谷歌搜索找到的許多解決方案中得到提示,但似乎我在某個地方受到了打擊。 我發現的一些選項是:
問題是你使用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);
它告訴this
聽this.subview
的事件testGo
並調用this.addFoo
在觸發事件
嘗試這個
this.listenTo(this.subview, "testGo",this.addFoo);
簽名:
object.listenTo(other, event, callback)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.