我正试图在另一个中获取模型对象实例.我提出这个错误:
Manager isn't accessible via topic instance
Run Code Online (Sandbox Code Playgroud)
这是我的模特:
class forum(models.Model):
# Some attributs
class topic(models.Model):
# Some attributs
class post(models.Model):
# Some attributs
def delete(self):
forum = self.topic.forum
super(post, self).delete()
forum.topic_count = topic.objects.filter(forum = forum).count()
Run Code Online (Sandbox Code Playgroud)
这是我的观点:
def test(request, post_id):
post = topic.objects.get(id = int(topic_id))
post.delete()
Run Code Online (Sandbox Code Playgroud)
我得到:
post.delete()
forum.topic_count = topic.objects.filter(forum = forum).count()
Manager isn't accessible via topic instances
Run Code Online (Sandbox Code Playgroud) 由于此提交,我们无法注册具有ID两次的视图.这看似合乎逻辑.但是我遇到了一个问题.
路由器
App.Router.map(function() {
this.resource('contact', { path: '/contacts/:contact_id' });
});
App.ContactShowRoute = Ember.Route.extend({});
Run Code Online (Sandbox Code Playgroud)
视图
App.ContactShowView = Em.View.extend({
elementId: "page-show-contact"
});
Run Code Online (Sandbox Code Playgroud)
考虑一下我已经在App.ContactShowRoute路线上了.我想transitionTo()相同的路线,但具有不同的上下文.
我希望emberjs销毁视图然后再创建它,但是我收到以下错误:
Uncaught Error: assertion failed: Attempted to register a view with an id already in use: page-show-contact
Run Code Online (Sandbox Code Playgroud)
我不想两次实例化具有相同ID的视图.我只想让ember破坏实际的那个,然后创建一个新的.
Ember.Mixin我的应用程序中包含DS.attr()和/或包含的内容很少DS.belongsTo().我想知道我应该如何对它们进行单元测试?
默认情况下,ember-cli会生成此测试
test('it works', function(assert) {
var MyModelObject = Ember.Object.extend(MyModelMixin);
var subject = MyModelObject.create();
assert.ok(subject);
});
Run Code Online (Sandbox Code Playgroud)
但当我尝试与DS.attr()我交互时,我收到以下错误:
TypeError: Cannot read property '_attributes' of undefined
at hasValue (http://localhost:4200/assets/vendor.js:90650:25)
at Class.get (http://localhost:4200/assets/vendor.js:90730:13)
at Descriptor.ComputedPropertyPrototype.get (http://localhost:4200/assets/vendor.js:29706:28)
at Object.get (http://localhost:4200/assets/vendor.js:35358:19)
at Class.get (http://localhost:4200/assets/vendor.js:49734:38)
at Object.<anonymous> (http://localhost:4200/assets/tests.js:20126:25)
at runTest (http://localhost:4200/assets/test-support.js:2779:28)
at Object.run (http://localhost:4200/assets/test-support.js:2764:4)
at http://localhost:4200/assets/test-support.js:2906:11
at process (http://localhost:4200/assets/test-support.js:2565:24)
Run Code Online (Sandbox Code Playgroud)
这让人感觉到了.最好的方法是什么?我应该DS.Model在测试中创建一个然后应用mixin吗?
谢谢 !
有没有办法访问嵌入式模型对象的父对象?例如 :
App.Person = DS.Model.extend({
name : DS.attr('string'),
emails : DS.hasMany('App.Email', { embedded: true })
});
App.Email = DS.Model.extend({
label : DS.attr('string'),
email : DS.attr('string'),
setParentUpdated: function() {
if(this.get('isDirty') == true)
// this.get('parent').get('stateManager').goToState('updated');
// I would like to do something like this.get('parent')
// to access 'App.Person' instance object
}.observes('isDirty')
});
Run Code Online (Sandbox Code Playgroud)