Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Javascript 用控制器包装余烬数据模型的最佳方法_Javascript_Ember.js_Ember Data - Fatal编程技术网

Javascript 用控制器包装余烬数据模型的最佳方法

Javascript 用控制器包装余烬数据模型的最佳方法,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我有一个带有渲染功能的自定义视图,需要进行一些计算。由于我已将应用程序不需要保存或进入服务器的所有显示逻辑和属性都放在ObjectController中,因此我需要手动将模型与控制器打包,以获得一些计算属性。它是有效的,但是没有更好/更干净的方法吗?因此,视图中的当前代码是: ... currentPage = pages.filterBy('nr', pageNb).get('firstObject') currentPageCntl = @cntl.get('controllers.page

我有一个带有渲染功能的自定义视图,需要进行一些计算。由于我已将应用程序不需要保存或进入服务器的所有显示逻辑和属性都放在ObjectController中,因此我需要手动将模型与控制器打包,以获得一些计算属性。它是有效的,但是没有更好/更干净的方法吗?因此,视图中的当前代码是:

...
currentPage = pages.filterBy('nr', pageNb).get('firstObject')
currentPageCntl = @cntl.get('controllers.page').set('model',currentPage)
currentPageDimensions = currentPageCntl.get('dimensions')
...

所以,如果我理解正确的话,您就有了不想包含在模型中的逻辑和数据,即使它们在某些地方属于同一类。我现在正在研究一个非常类似的问题。我不知道这是否是最好的方法,但我一直在做的是包装余烬数据模型,它是一个更接近您想要的模型的对象。例如,下面是您可能看到的情况:

App.Page = DS.Model.extend

App.PageWrapper = Ember.Object.extend
    page: null

    dimensions: () -> 
        # ...
    .property('page')
因此,对于您的应用程序,不要像对待模型一样对待页面,而要像对待模型一样对待页面包装器。因此,将当前页面更改为:


通过这种方式,您可以向包装器类添加任何您想要的逻辑/模型,但仍然保持它与页面的不同。如果你给我更多的信息,我可能可以帮助你想出一些更具余烬感的东西,但这是一个非常有效的解决方案。

我知道计算属性不会保存在服务器上。我可以将维度移动到模型中,但接下来我必须移动大量其他内容绑定,其他计算属性,。。。对于模型,因为维度属性依赖于它们,这在我看来不是很干净。好的,这更有意义。让我修改一下我的答案。那接近我的意思。但你不是在模仿ObjectController吗。我认为这使事情变得更加复杂。在此之前,if可以使currentPage保留控制器并执行currentPage.get'dimensions'和currentPage.get'id'模型的属性。所以我肯定认为ObjectController就是我想要的,我只是觉得如果可能的话,它会很好用,在本例中,对于pages.filterBy'nr',pageNb.get'firstObject'返回包装我的模型的ObjectController。不过,如果你在页面模型中使用ArrayController,它会自动将项目按详细信息包装在一个数组中。但我不知道这是否有可能。
currentPage = App.PageWrapper.create
    page: pages.filterBy('nr', pageNb).get('firstObject')