在函数ember.js上添加观察者

时间:2013-12-05 14:15:49

标签: ember.js

我的英语不是很好,在建议中道歉

我正在使用白色的ember.js,我希望ac函数在组件/ graph-pie渲染时运行。我知道我需要放一个观察者并阅读文档,但我不明白观察者的位置和方式。

这是代码

的index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>COMPONENT</title>
  <script src="js/libs/jquery-1.10.2.js"></script>
  <script src="js/libs/handlebars-1.1.2.js"></script>
  <script src="js/libs/ember-1.2.0.js"></script>
  <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
  <script src="js/app.js"></script>
  <link rel="stylesheet" href="css/normalize.css">
  <link rel="stylesheet" href="css/style.css">
</head>
<body>

 <script type="text/x-handlebars">
  <div>prova<div>
  <button> {{#link-to "graphs"}}graph{{/link-to}}</button>
  {{outlet}}
 </script>

 <script type="text/x-handlebars" data-template-name="graphs">
  {{graph-pie}}
 </script>

 <script type ="text/x-handlebars" id="graphs" data-template-name="components/graph-pie">
   <div id="BC">
     <div id="Gphic">
     </div>
   </div>
 </script>
</body>
</html>

app.js

App = Ember.Application.create();

App.Router.map (function (){
  this.route("graphs");
});

App.GraphsRoute = Ember.Route.extend ({
  model: function() {
    return data;
  }
});

App.GraphPieComponent = Ember.Component.extend({
  actions: {
    ac: function () {
      //do something
    }
  }
})

App.GraphsController = Ember.ArrayController.extend({

}); 



var data= ...

2 个答案:

答案 0 :(得分:0)

您将需要在组件上使用didInsertElement事件,类似这样。

App.GraphPieComponent = Ember.Component.extend({
  didInsertElement: function() {
     this._ac();
  },
  _ac: function() {
     //do something
  },
  actions: {
    ac: function () {
      this._ac();
    }
  }
});

答案 1 :(得分:0)

您可以使用didInsertElement挂钩

http://emberjs.com/api/classes/Ember.Component.html#event_didInsertElement

插入组件后会触发哪个余烬

你可以把你的代码放在钩子里,或者从内部调用你的AC方法。