小编Tho*_*rin的帖子

无法通过模型实例访问管理器

我正试图在另一个中获取模型对象实例.我提出这个错误:

 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)

django django-models django-managers instances

70
推荐指数
4
解决办法
5万
查看次数

尝试注册已使用ID的视图

由于此提交,我们无法注册具有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.js

10
推荐指数
1
解决办法
2542
查看次数

我们如何使用ember-cli对Model Mixin进行单元测试

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吗?

谢谢 !

javascript unit-testing ember.js ember-data ember-cli

5
推荐指数
1
解决办法
1045
查看次数

从嵌入对象访问父记录

有没有办法访问嵌入式模型对象的父对象?例如 :

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)

ember.js ember-data

2
推荐指数
1
解决办法
205
查看次数