微软为Silverlight和WPF制作了Prism框架.它的RegionManager和其他东西看起来很棒.
Knockout有没有类似的框架?
谢谢.
我有一个具有查询参数的路由.激活视图时,将收集查询参数并将其传递给服务器端请求.我不知道参数是什么.我只是将它们传递给服务器进行处理.
在我的viewmodel activate方法中,context参数是一个包含查询参数的对象,还有两个额外的项:routeInfo和router.Durandal将这些添加到查询参数中.首先,我不希望那些传递到服务器端.其次,如果我的查询参数也包含这两个名称,那么它们将被覆盖.
我查看了路由器代码并找到了它们添加到我的参数中的位置(在dequeueRoute中),但是找不到阻止添加的方法,也没有办法只获取没有它们的查询参数.
有没有人知道如何在没有routeinfo和路由器的情况下获取查询参数?出于好奇,为什么他们首先被添加而不是单独的论点?
我用durandal/breeze开发了一个asp.net mvc解决方案.
我有一个下拉列表,其中列表是由实体框架代码优先提供的枚举填充的.这是模型服务器端:
public enum EnumCategory
{
Cat1,
Cat2,
Cat3,
Cat4
}
Run Code Online (Sandbox Code Playgroud)
这是使用此枚举的表:
public class Transport
{
[Key]
public int Id { get; set; }
public EnumCategory Category { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题:如何检索枚举服务器端的这些值,以便能够填充我的下拉客户端?我是否必须手动创建一个新的数组客户端,如下所示:
var categories = [
{ id: '' , description: '' },
{ id: 'Cat1', description: 'Category 1' },
{ id: 'Cat2', description: 'Category 2' },
{ id: 'Cat3', description: 'Category 3' },
{ id: 'Cat4', description: 'Category 4' }];
Run Code Online (Sandbox Code Playgroud)
我的视图显示此下拉列表,如下所示:
<select data-bind="options: $root.categories,
optionsText: …
Run Code Online (Sandbox Code Playgroud) 这是有效的:
view.html
<div><input type="radio" name="radioPriority" data-bind="checked: priority" value="want" style="margin-top: -3px; margin-right: 3px;" />I want to</div>
<div><input type="radio" name="radioPriority" data-bind="checked: priority" value="need" style="margin-top: -3px; margin-right: 3px;"/>I need to</div>
Run Code Online (Sandbox Code Playgroud)
controller.js
function feedbackViewModel() {
var self = this;
self.priority = ko.observable("want");
//lots of other stuff
}
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,当您选择第二个无线电时,优先级可观察值将变为"需要".但是,我想使用Twitter Bootstrap按钮组作为收音机.这是我的HTML,但它没有按预期更改observable:
<span class="btn-group" data-toggle="buttons-radio">
<button data-bind="checked: priority" type="button" class="btn" value="want">I want to</button>
<button data-bind="checked: priority" type="button" class="btn" value="need">I need to</button>
</span>
Run Code Online (Sandbox Code Playgroud)
更新我有一个jsfiddle在这里:http: //jsfiddle.net/a8wa8/6/ "priority1"是标准的无线电选择,"priority2"是自举按钮.
我正在开发一个SPA,我想使用多个主视图.这是我的用例:
我有一个有个人资料页面的用户.在该个人资料页面中,我希望能够显示几个不同的视图,即.细节,作品,联系信息等.我需要能够深入链接到每个视图.这些视图中的每一个都必须显示主布局视图中的基本用户数据.
我的理解是我应该使用compose这个并且我有一些似乎有用的代码,但是,我希望能够将数据从"辅助shell"传递到实际的子视图.似乎splat数据不会传递给子视图模型的activate方法.
在我的"master"viewmodel中,我创建了一个名为activeView的observable,它包含一个对应于子视图模型的字符串(viewmodels/user/details).然后,我有一个敲门声明如下:
<!-- ko compose: {
model: activeView(),
activate: true
} --><!-- /ko -->
Run Code Online (Sandbox Code Playgroud)
如何将数据传递到子视图?或者有更好的方法吗?
提前致谢!
我正在使用Durandal 1.2和Durandal路由器插件,并希望通过Google Analytics跟踪SPA中的网页浏览量:
window._gaq.push(['_trackPageview', location.pathname + location.search + location.hash]
我知道我可以监听hashchange事件,甚至可以通过Sammy进行连接.我宁愿不这样做,因为Durandal目前正在被重写以消除对Sammy的依赖.
我的问题是,有没有办法使用Durandal路由器插件设置它?
Durandal有一个名为shell的基本视图.
我在其上添加了一个搜索框,以允许管理员/质量保证用户模仿任何系统用户.在按钮上单击我希望能够更新当前显示的视图的视图.
我将如何进行,在我的子视图上公开一个函数,以便我可以从shell调用它,或从子视图挂钩到shell的按钮单击事件.
题:
Durandal是否公开了我可以使用的钩子来冒泡或将事件传递给不同的视图或父容器?
我想创建一个div(基本上它会包含列表框),我想在不同的页面中使用div,
哪个是在duarandal.js中使用的最佳选择?
Composition
Run Code Online (Sandbox Code Playgroud)
http://durandaljs.com/documentation/Using-Composition/
窗口小部件
我正在构建一个应用程序,并希望显示一个2层菜单,两个层都始终可用.Durandal 2.0 推出了新的路由器,它支持"子路由器",可以更容易地进行深度链接.
我的问题 - 我可以永久加载我的'子级'导航路径(以及父级未处于活动状态时呈现的子菜单),或者是"子路由器"设计旨在延迟加载它们以在深层链接到达时评估它们被评估?
Durandal示例显示主导航寄存器是一个splat路由,然后当加载/激活该视图模型时,子路由器被注册.
例如:在Durandal 2.0提供的示例中,mian nev已注册 shell.js
router.map([
{ route: ['', 'home'], moduleId: 'hello/index', title: 'Validation test', nav: true },
{ route: 'knockout-samples*details', moduleId: 'ko/index', title: 'Knockout Samples', nav: true, hash: '#knockout-samples' }
]).buildNavigationModel()
.activate();
Run Code Online (Sandbox Code Playgroud)
然后ko/index.js
视图模型注册孩子(上activate()
)
var childRouter = router.createChildRouter()
.makeRelative({
moduleId:'ko',
fromParent:true
}).map([
{ route: '', moduleId: 'helloWorld/index', title: 'Hello World', type: 'intro' },
{ route: 'helloWorld', moduleId: 'helloWorld/index', title: 'Hello World', type: 'intro', nav: true},
{ …
Run Code Online (Sandbox Code Playgroud) 我们一直在努力让我们的PhoneGap 2.9,Durandal 2.0应用程序在Windows Phone 8上运行.我们已经能够按照步骤通过visual studio将应用程序部署到模拟器和设备.但是,当应用程序在VS中构建时,我们遇到问题,然后使用应用程序部署工具将完成的.xap部署到设备.启动屏幕加载但显示黑屏.
我们已经更正了www的路径,如本博客文章http://mikaelkoskinen.net/durandal-phonegap-windows-phone-8-tutorial/所示,该应用程序使应用程序在模拟器上工作,但不在设备上.
我们还尝试使用phonegap构建xap,因为它现在支持测试版的Windows Phone 8 - http://phonegap.com/blog/2013/10/18/2013-10-18-phonegap-build-support-for -windows-phone-8 /.这已经返回了类似的结果.
我们相信main.js和index.html文件正在被正确加载,但问题是以某种方式使用requirejs和durandal 2.
是否有其他人成功使用这种工具组合(或更新的版本),如果是这样,他们知道我们哪里出错了.
durandal ×10
knockout.js ×6
javascript ×3
breeze ×1
cordova ×1
durandal-2.0 ×1
hottowel ×1
knockout-mvc ×1
mvvm ×1
prism ×1
sammy.js ×1