Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js &引用;请确保此控制器已使用容器“实例化”;_Ember.js - Fatal编程技术网

Ember.js &引用;请确保此控制器已使用容器“实例化”;

Ember.js &引用;请确保此控制器已使用容器“实例化”;,ember.js,Ember.js,所以这是可行的,但是如果您向这个控制器添加一个“needs”属性,它会给出关于没有容器的错误。这些项目控制器将观察外部控制器上的属性,因此我需要“需要”。那么我如何用容器实例化控制器。。。或者在实例化后将其破解?看起来您可以这样做 var someCollectionView = Ember.CollectionView.extend({ itemViewClass: Ember.ListItemView.extend({ templateName:

所以这是可行的,但是如果您向这个控制器添加一个“needs”属性,它会给出关于没有容器的错误。这些项目控制器将观察外部控制器上的属性,因此我需要“需要”。那么我如何用容器实例化控制器。。。或者在实例化后将其破解?

看起来您可以这样做

var someCollectionView = Ember.CollectionView.extend({
  itemViewClass: Ember.ListItemView.extend({
                     templateName: "foo-item",

                     init: function(){
                       var content = this.get('content');
                       var controller = Ember.ObjectController.extend({

                                            // controller for individual items in the collection

                                            actions: {
                                                // actions specific to those items
                                                }
                                            }
                        }).create({
                            content: content,
                        });
                        this.set('controller', controller);
                        this._super();
                     }
                  })
});

访问
应用程序。通常建议不要访问容器。所有核心对象,如视图、控制器、路由,都应该由容器实例化。在这种情况下,它们还将有一个
容器
属性(纯JS属性,而不是Ember属性),您可以使用该属性实例化其他对象,而这些对象反过来将访问该容器

所以不是

           ...
                        }).create({
                            content: content,
                            container: App.__container__
                        });
                        this.set('controller', controller);
                        this._super();
                     }
                  })
});
试一试

如果容器是未定义的,那么您必须沿着链向上移动,并确保您从中调用它的任何对象也从容器中出来

           ...
                        }).create({
                            content: content,
                            container: App.__container__
                        });
                        this.set('controller', controller);
                        this._super();
                     }
                  })
});
Ember.ObjectController.create(...)
this.container.lookupFactory('controller:object').create(...)