我正在构建一个三向选择器:公司,部门和用户.

我试图找出在我的Backbone应用程序中构建它的最佳方法.这是我现在遇到的问题.
假设用户选择了一家公司.然后,将填充部门和用户集合,并且视图将更新:

然后,用户可以从列表中选择一个部门,这将进一步细化用户选择.我工作得很好.
或者,用户可以直接进入用户列表并找到用户(无需先指定部门).在这种情况下,部门和用户的视图需要更新:
我正在努力做最好的方法.到目前为止,我departments和users收藏品都有一个selected属性,这就是我维持状态的方式.目前我正在做类似的事情
departments集合上设置选定的部门我这样做是因为如果我让视图只触发事件(没有首先设置部门选择属性),我就会遇到竞争条件:部门和用户集合都会响应事件,并且取决于用户的时间可能没有得到适当的改进.
第二部分:
users集合上设置所选用户departments集合上设置选定的部门(它知道)这就是我被困住的地方.部门集合实际上不需要做任何事情,因为它的选定属性已经是正确的; 实际上,它的视图只需要重新渲染.用户的观点也是如此.
但这不是全部,因为还有很多其他事情可能发生.我觉得它失控了.
更新:我应该只使用路由来保存应用程序状态吗?这可以简化事情......
更新2: 这个问题对我有帮助.拥有一个单独的模型来管理国家肯定是要走的路.
更新3:拥有一个单独的模型来存储状态+使用jQuery延迟是惊人的.认真.它完成了我.
我正在为会计部门构建仪表板应用程序.
用户将选择一个月,并查看当月符合特定条件的所有公司.路线将是
/:month_id a summary page
/:month_id/companies more details about each company
/:month_id/companies/:company_id all details about a single company
Run Code Online (Sandbox Code Playgroud)
理想情况下,我有一个month模型hasMany company模型.唯一的问题是,公司将在几个月内出现.
如果我错了,请纠正我,但这是不是意味着如果公司已经在商店,当要求新的月份时,它将从商店而不是服务器获取该公司的数据?每个月的数据会有所不同,所以这对我不起作用.
我想在这个应用程序中,每个公司的id都是他们的正常,整数id加上选定的月份.因此,解决这个问题的方法之一就是给每个公司一个像'15-Mar-2013'.
或者,我可以companies通过原始数据传递每个月的数据,并在plain数组上进行转换.但问题是,我必须计算公司的总量(除了整个月),将这两件事分开是很好的.如果我有一个完全独立的公司模型,我可以在模型中去城镇:
App.Company = DS.Model.extend({
month: DS.belongsTo('App.Month'),
name: DS.attr('string'),
contracts: DS.hasMany('App.Contract'),
totalRevenue: function() {
return this.get('contracts')
.filterProperty('type', 'newSetup')
.getEach('feeChange').reduce(function(accum, item) {
return accum + item;
}, 0);
}.property('contracts.@each.feeChange'),
...additional aggregation functions
});
Run Code Online (Sandbox Code Playgroud)
你怎么看?
我有一个 object x,运行console.log(x)Chrome 的调试器后向我显示:

如何检查是否x正在jQuery.Event使用 JavaScript?(我已经尝试过了Object.getPrototypeOf,toString并且obj.constructor)。
我正在将我的Ember CLI插件从0.1.9升级到0.2.0,并在运行时遇到此错误ember test --server:
ReferenceError:无法找到变量:在http:// localhost:7357/assets/test-loader.js,第3行定义
ember serve工作,我可以/tests在浏览器中访问,但其他东西似乎打破了testem /幻像设置.
我已经升级了Phantom,并且经历ember init了几次差异,但我仍然必须遗漏一些东西.
我看到它的方式,在使用过滤器构建动态图表时,每次用户请求过滤后的数据我都可以
执行一个新的MySQL查询,并使用MySQL进行过滤.
SELECT date,
SUM(IF( `column` = `condition`, 1, 0)) as count
...
Run Code Online (Sandbox Code Playgroud)执行一个新的MySQL查询,并使用服务器端语言(在我的情况下为PHP)进行过滤.
function getData(condition) {
$resultSet = mysqli_query($link, "SELECT date, column ... ");
$count = 0;
while ($row = mysqli_fetch_assoc($result_set)) {
if ($row['column'] == 'condition') {
$count++;
}
}
}
Run Code Online (Sandbox Code Playgroud)最初执行单个MySQL查询,将所有数据传递给客户端,并使用Javascript&d3进行过滤.
我希望答案不是黑白的.例如,如果几乎没有请求某个过滤器,则让其他95%的用户等待相关数据可能没有意义,因此过滤器将需要新的数据调用.但我真的在考虑边缘情况 - 过滤器经常使用的情况,但是特殊情况.在这种情况下,将过滤逻辑放在前端,后端或数据库查询中是否更好?
我正在按照本指南对逆向工程数据库进行操作.该指南说它使用该paramters.yml文件作为数据库参数,但我怎样才能覆盖它?我在我的网站上列出了几个连接config.yml,我希望能够选择其中一个连接.
我正在将大约 80,000 行的数据集加载到我创建的时间序列图表对象中,这导致我的浏览器崩溃。
我认为这对于 d3 来说不应该是一个问题,因为这个 Crossfilter 示例使用数十万行的数据集进行了演示。(尽管数据正在聚合,而我正在绘制每个点的图表)。
我不知道如何调试这个。Chrome 没有给我任何有用的消息,Google 结果也很少。有任何想法吗?
在工作中,我们喜欢将参数作为哈希引用传递给子例程:
my $manager = DatabaseManager->new({
'sHost' => 'my_host',
'sDatabase' => 'some_database'
});
Run Code Online (Sandbox Code Playgroud)
对象本身有一个init函数,如下所示:
sub _init
{
my ($self, $phArgs) = @_;
$self->{_sHost} = $phArgs->{sHost};
$self->{_sDatabase} = $phArgs->{sDatabase};
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以整理一下吗?即使只是第一行可以更清楚,我认为这是一个改进.就像是
sub _init
{
my ($self, ($host, $database) ) = @_;
$self->{_sHost} = $host;
$self->{_sDatabase} = $database;
}
Run Code Online (Sandbox Code Playgroud)
然后很清楚子程序需要什么.有任何想法吗?
说我有两个控制器,一个CompaniesController和一个IndexController.事实证明,我的Index路线所需的所有数据都来自于CompaniesController.所以,我已经指定了IndexController这样的:
App.IndexController = Ember.ArrayController.extend({
needs: 'companies',
});
Run Code Online (Sandbox Code Playgroud)
如果CompaniesController已经初始化,这很有效,但是我第一次访问该网站时呢?CompaniesController是空的.
所以,我需要CompaniesController从内部初始化数据IndexController.我该怎么做呢?
我正在尝试编写自定义身份验证器,类似于文档中此示例中的身份验证器.目标是能够通过检索当前登录的用户session.user.
我正在使用Ember CLI,所以initializers/authentication.js我有
import Ember from 'ember';
var customAuthenticator = Ember.SimpleAuth.Authenticators.Devise.extend({
authenticate: function(credentials) {
debugger;
}
});
export default {
name: 'authentication',
initialize: function(container, application) {
Ember.SimpleAuth.Session.reopen({
user: function() {
var userId = this.get('user_id');
if (!Ember.isEmpty(userId)) {
return container.lookup('store:main').find('user', userId);
}
}.property('userId')
});
// register the custom authenticator so the session can find it
container.register('authenticator:custom', customAuthenticator);
Ember.SimpleAuth.setup(container, application, {
routeAfterAuthentication: 'landing-pages',
authorizerFactory: 'ember-simple-auth-authorizer:devise'
});
}
};
Run Code Online (Sandbox Code Playgroud)
当我尝试进行身份验证时,出现以下错误:
TypeError: Cannot read property 'authenticate' of undefined …Run Code Online (Sandbox Code Playgroud) d3.js ×2
ember-cli ×2
ember.js ×2
backbone.js ×1
crossfilter ×1
doctrine-orm ×1
ember-data ×1
javascript ×1
jquery ×1
perl ×1
symfony ×1