Model 使用余烬数据使用用户定义的参数执行UI更新

Model 使用余烬数据使用用户定义的参数执行UI更新,model,controller,ember.js,routes,ember-data,Model,Controller,Ember.js,Routes,Ember Data,我目前正在开发一个ember.js应用程序,使用ember数据及其RESTAdapter与我的服务进行通信 我定义了所需的余烬数据模型,一切似乎都很好,但我不太确定,我是否朝着正确的方向前进-所以这将是一个“解决方案好吗?”-问题 我们的服务API提供了一种方法来获取限制在请求时间范围内的记录-REST请求参数如下所示: { from: ..., to: ... } 我的UI的用户应该能够选择一个时间范围,并且UI应该在请求的时间范围内使用数据进行更新 现在不会有写操作-这是一个只读UI 这是

我目前正在开发一个ember.js应用程序,使用ember数据及其RESTAdapter与我的服务进行通信

我定义了所需的余烬数据模型,一切似乎都很好,但我不太确定,我是否朝着正确的方向前进-所以这将是一个“解决方案好吗?”-问题

我们的服务API提供了一种方法来获取限制在请求时间范围内的记录-REST请求参数如下所示:

{ from: ..., to: ... }
我的UI的用户应该能够选择一个时间范围,并且UI应该在请求的时间范围内使用数据进行更新

现在不会有写操作-这是一个只读UI

这是我当前的解决方案:

我定义了一个route类,它为请求结果提供模型,并定义了一个ArrayController,它为UI提供服务

路线类别代码:

MyModelRoute = Ember.Route.extend
    model: ->
        # Calling controller to get the required parameters for the initial
        # model setup - this doesn't feel right too, but I want to keep the
        # time frame parameters for the JSON request at one position (controller)...
        controller = @controllerFor('my_models')
        # get fromDate and toDate from controller
        MyModel.find({from: fromDate, to: toDate})
ArrayController代码:

MyModelController = Ember.ArrayController.extend
    updateMyModels: -> 
        # ... some boring code to get fromDate and toDate ...

        # Overwriting the content property which was previously set by
        # route's model property seems to be nasty...
        myModels = MyModel.find({from: fromDate, to: toDate})
        myModels.one('didLoad', =>
            @set('content', myModels) 
        )
“我的视图”提供了两个日期选择器,允许用户指定要查看的时间范围(“我的示例代码”中的
fromDate
toDate

每当用户选择一个新的时间范围时,我的控制器上的两个观察到的变量都会被更新,这将导致向服务器发出一个具有用户请求的时间范围的新请求(
updateMyModels()
method in my sample)

因此,我的观点是:如您所见,我目前正在控制器的
updateMyModels()
方法中更新我的ArrayController的“content”属性,该方法绑定到UI时间框架属性-我完全忽略了之前提供的路由模型。所以我路由上的model属性只是用来“初始化”我的控制器,这似乎有点奇怪

一切都很好,但我想知道是否有更好/正确的方法来做到这一点

如果我应该使用路由提供的模型而不是控制器属性: 是否有从控制器与路由模型通信的方法(我确信有一种方法;-),更重要的是:如何从控制器重新加载当前路由?
transitiono()
方法正确吗


提前谢谢

我遇到了类似的问题,最后删除了route对象。 只有在访问URL参数时,路由才有意义。因为MyModelRoute不访问参数,所以只需将其删除即可。您仍然可以在其“init”方法中初始化控制器


如果在路径中对查询进行编码,情况会有所不同……比如“/my\u model/fromDate/toDate”之类。不过我不需要那个。因此,我正在处理控制器中的所有内容。

我遇到了类似的问题,最终删除了route对象。 只有在访问URL参数时,路由才有意义。因为MyModelRoute不访问参数,所以只需将其删除即可。您仍然可以在其“init”方法中初始化控制器


如果在路径中对查询进行编码,情况会有所不同……比如“/my\u model/fromDate/toDate”之类。不过我不需要那个。因此,我在控制器中处理所有事情。

我也考虑过简单地删除route类,但我非常不确定-很高兴听到您也遇到了同样的情况并走了那条路!route类上的model属性让我有些困惑,而绑定到特定路由的模型上下文的想法听起来很不错,这就是为什么我试图朝着这个方向重构代码。我将删除路线类-谢谢!我也考虑过简单地取消路线类,但我很不确定-很高兴听到你有同样的情况,并走那条路!route类上的model属性让我有些困惑,而绑定到特定路由的模型上下文的想法听起来很不错,这就是为什么我试图朝着这个方向重构代码。我将删除路线类-谢谢!