EmberJs使用inject.controller访问父数据

时间:2015-12-23 09:48:41

标签: ember.js

我正在尝试从子模板访问其父数据 在之前版本的emberjs中,可以使用needs关键字来完成:

AesZipFileEncrypter

根据我对新ember版本的理解,这应该像下面那样完成(因为需求关键字已被弃用):

public class ImageCompression extends AsyncTask<String, Void, String> {

private Context context;
private static final float maxHeight = 1280.0f;
private static final float maxWidth = 1280.0f;


public ImageCompression(Context context){
    this.context=context;
}

@Override
protected String doInBackground(String... strings) {
    if(strings.length == 0 || strings[0] == null)
        return null;

    return compressImage(strings[0]);
}

protected void onPostExecute(String imagePath){
    // imagePath is path of new compressed image.
}

但它似乎不适用于我的HTML代码我使用以下行为空白:

app.RepositoriesController = Ember.Controller.extend({
    needs: "user",
    user : Ember.computed.alias("controllers.user");
 });

谢谢!

3 个答案:

答案 0 :(得分:2)

您需要做的就是致电:

4.52

并且ember非常聪明,可以根据属性键自动选择正确的控制器。

http://emberjs.com/api/classes/Ember.inject.html#method_controller

答案 1 :(得分:0)

我不确定这是最好的做法,但它完成了这项工作: 我在路线中添加了一个新功能:

setupController: function (controller, model) {
    var user = this.modelFor('user');
    controller.set('user', user);
    Ember.$.getJSON(user.repos_url).then(function(res){
        controller.set('model', res);
    });

}

答案 2 :(得分:0)

通常提取数据应该转到模型钩子,因此上面的代码可以写成:

model: function(){
 var user = this.modelFor('user');
 return Ember.$.getJSON(user.repos_url).then(function(res){
   return { user: user, res: res}
 });
}
现在,您可以在控制器中访问

之类的模型
 user: Ember.computed.alias('model.user'),
 res: Ember.computed.alias('model.res')