有没有办法防止在XAML文件中搜索"查找所有引用"?搜索XAML文件非常缓慢.
find-all-references visual-studio-2010-sp1 visual-studio-2012
我正试图弄清楚如何在Aurelia中存储一个类似"全局"的功能.我已经按照本教程" http://blog.durandal.io/2015/04/24/aurelia-custom-elements-and-content-selectors/ "来打开一个带有动态视图模态的模态,但我可以'弄清楚我应该把这个功能放在哪里,这样我就可以重新使用它所有的查看路线了.
我在默认视图中创建了这个函数:
//open modal
setModal(modal) {
this.contentModal = modal;
$('.modal').modal();
}
Run Code Online (Sandbox Code Playgroud)
在该视图模板中使用此标记:
<a click.delegate="setModal('users')">Test</a> <a click.delegate="setModal('child-router')">Test 2</a>
<modal>
<modal-header title.bind="'View Person'"></modal-header>
<modal-body content.bind="contentModal"></modal-body>
<modal-footer buttons.bind="['Cancel']"></modal-footer>
</modal>
Run Code Online (Sandbox Code Playgroud)
我可以通过click.delegate="setModal('users')视图模板内部调用它,但我无法弄清楚如何在此视图模板之外实际使用它.
对不起,我对这个框架很新!
在单元测试中,如何实例化自定义元素(或视图)并访问实时 DOM元素?
我读到了这篇文章,它实现了自定义元素的实例化,但我认为我无法访问DOM元素.
顺便说一下,我知道Protractor和端到端测试,但这不是我在这里寻找的.
2016年10月14日更新:
我发现我可以注册这样的实例来完成@inject(Element)工作:
container = new Container().makeGlobal();
container.registerInstance(Element, document.createElement('div') );
vm = BehaviorInstance.createForUnitTest(Test, {}, {});
Run Code Online (Sandbox Code Playgroud)
虽然注入工作(我的测试自定义元素得到参考),但这并没有导致aurelia对元素做任何事情.我的自定义元素的模板尚未使用,因此元素innerHtml是<div></div>.
我有一个名为custom-element的自定义元素,我把它放在模板A中(带有控制器A)

export class CustomElem {
@bindable onCompleted;
........
}
Run Code Online (Sandbox Code Playgroud)
而updateDescription()是控制器A的一个功能.
export class A {
updateDescription(){
....
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用custom-element调用updateDescription()?
我的Aurelia视图模型中有一个递归对象,如下所示:
Class BottomlessPit {
Name: string = '';
MorePits: BottomlessPit[] = null;
}
Run Code Online (Sandbox Code Playgroud)
因此,我想在Aurelia视图中使用递归模板.它只会在一个地方使用,所以我宁愿使用模板文字.这是一些不起作用的伪代码:
<template name="pit">
<li>
${Name}
<compose view.bind="pit" repeat.for="subpit of MorePits"></compose>
</li>
</template>
Run Code Online (Sandbox Code Playgroud)
这是Aurelia的特色吗?
所以,我有一个所有用户的列表,它填充了一个选项的选项.
<option repeat.for="user of userService.users">
${user.firstName} ${user.lastName}
</option>
Run Code Online (Sandbox Code Playgroud)
我有一个传入的组记录,其中附有一个用户列表.我遵循作弊说明并将其绑定到模型的单个索引.
<select value.bind="group.users[0]">
<option repeat.for="user of userService.users" model.bind="user">
${user.firstName} ${user.lastName}
</option>
</select>
Run Code Online (Sandbox Code Playgroud)
因此,组中的传入用户与列表中的某个用户相同:
{
id: 123,
firstName: 'Matt',
lastName: 'Davis'
}
Run Code Online (Sandbox Code Playgroud)
但是当加载组并将其绑定到视图时,不会从选择中选择正确的用户.实际上,我希望这是因为JavaScript会寻找引用平等.
理想情况下,我想Aurelia路上找到传入的记录是如上和(a)通过选择测试平等(二),我在一些扩展(可能是过滤器?)已经定义搜索列表,(c)选择它在列表中并且(d)将该选择传播回记录中,以便记录现在在引用中同步.
我宁愿不回到手动执行此操作的触发器,因为在我的应用程序中我会有很多这样的选择.
对于(a)和(c),我愿意解决,尽管很遗憾.
我按照这些说明将IL偏移添加到Silverlight堆栈跟踪.这在DEBUG模式下构建时效果很好但是我们的生产/ qa构建过程使用RELEASE模式编译所有内容,这似乎松散了IL偏移信息.在释放模式下,所有IL偏移最终都是"0xffffffff".使用反射器比较调试/发布程序集我注意到DebuggableAttribute的使用方式不同.
DEBUG构建:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: ComVisible(false)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.EnableEditAndContinue | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.Default)]
[assembly: AssemblyConfiguration("Debug")]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows=true)]
[assembly: Extension]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework("Silverlight,Version=v5.0", FrameworkDisplayName="Silverlight 4")]
[assembly: AssemblyCopyright("Copyright @ Foo Company 2010-2012")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("Foo.Ria.Bar")]
[assembly: AssemblyCompany("Foo Company")]
[assembly: AssemblyProduct("Foo Product")]
Run Code Online (Sandbox Code Playgroud)
vs RELEASE构建:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: ComVisible(false)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows=true)]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyTitle("Foo.Ria.Bar")]
[assembly: AssemblyTrademark("")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework("Silverlight,Version=v5.0", FrameworkDisplayName="Silverlight 4")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyCompany("Foo Company")] …Run Code Online (Sandbox Code Playgroud) 我写了一个最小的测试页来试用Aurelia.
http://www.andrewgolightly.com/
GitHub:https://github.com/magician11/ag-landingpage
我的上一次测试显示,用135次请求加载页面需要55秒.
看来我需要首先捆绑jspm_packages目录,以便立即下载543KB ..而不是碎片.
所以我给出了这个例子: http //aurelia.io/get-started.html
我如何捆绑包裹?我不清楚https://github.com/jspm/jspm-cli/wiki/Production-Workflows
然后我在index.html文件中更新了什么?我仍然需要包含jspm_packages文件夹,因为我在头部引用它,对吧?
<link rel="stylesheet" href="jspm_packages/github/twbs/bootstrap@3.3.2/css/bootstrap.min.css">
<link rel="stylesheet" href="jspm_packages/npm/font-awesome@4.3.0/css/font-awesome.min.css">
Run Code Online (Sandbox Code Playgroud)
谢谢.
更新
该团队正致力于捆绑..
来自Rob Eisenberg:"我们还没有完成我们的捆绑支持.我们正在努力."
我正在尝试将当前的Angular.js项目迁移到Aurelia.js.我正在尝试这样做:
report.js
export class Report {
list = [];
//TODO
listChanged(newList, oldList){
enter code here
}
}
Run Code Online (Sandbox Code Playgroud)
report.html
<template>
<require from="component"></require>
<component list.bind="list"></component>
</template>
Run Code Online (Sandbox Code Playgroud)
所以问题是:如何检测列表何时更改?
在Angular.js我能做到
$scope.$watchCollection('list', (newVal, oldVal)=>{ my code });
Run Code Online (Sandbox Code Playgroud)
也许Aurelia有类似的东西?
我目前正在学习和使用Aurelia,并且发生了一些奇怪的事情(可能是正常的).
使用以下代码时
export class NavBar {
get username() {
console.log('o_o')
return 'name' + Date.now()
}
}
Run Code Online (Sandbox Code Playgroud)
在模板中${username},用户名总是每秒更新几次(当然,console.log也会多次记录).
解决方法是简单地使用函数而不是getter并${username()}在模板中调用.但这种行为是正常的吗?所以我有时候应该使用getter有时候不是吗?
谢谢!