我正在尝试使用Durandal,Breeze和淘汰赛来实现WebApi OData.但我总是低于错误:
无法初始化OData.需要支持远程OData服务
我创建了一个视图模型:
var my = {}; //my namespace
$(function () {
var serverAddress = "/odata/";
breeze.config.initializeAdapterInstances({ dataService: "OData" });
var manager = new breeze.EntityManager(serverAddress);
my.vm = {
customers: ko.observableArray([]),
load: function () {
var query = breeze.EntityQuery.from("Customers");
manager.executeQuery(query, function (data) {
var results = data.results;
$.each(data.results, function (i, c) {
my.vm.customers.push(c);
});
});
}
}
my.vm.load();
ko.applyBindings(my.vm);
});
Run Code Online (Sandbox Code Playgroud)
在BreezWebApiConfig中提到:
public static void RegisterBreezePreStart() {
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "BreezeApi",
routeTemplate: "api/{controller}/{action}"
);
}
Run Code Online (Sandbox Code Playgroud)
并注册WebApi:
public static void Register(HttpConfiguration config)
{ …Run Code Online (Sandbox Code Playgroud) 我正在创建一个使用durandal和knockout的个人网站,并使用以下代码绑定编辑博客页面.一切都很好,我能够将文本区域与ajax调用的返回文本绑定.
一旦完成这一点,我很好奇,如果Web服务的长响应会破坏它,所以我在服务中放入一个Thread.Sleep(1000),现在我无法将它返回到文本区域.有关如何使其工作的任何建议???
旁注:我不认为这与durandal框架有关,但我认为我会包括我是它
JavaScript的
define(['services/logger', 'services/wysiwyg'], function (logger, wysiwyg) {
var postObservable = ko.mapping.fromJS({});
var vm = {
activate: activate,
post: postObservable,
};
return vm;
function activate(routeData) {
var id = routeData.id;
$.ajax(
{
type: "GET",
url: '/api/blog/get',
data: { id: id },
dataType: "json",
})
.then(function(data){
ko.mapping.fromJS(data, postObservable);
});
}
});
Run Code Online (Sandbox Code Playgroud)
C#
public class BlogController : ApiController
{
public IBlogRepository _blogRepository;
public BlogController(IBlogRepository blogRepository)
{
_blogRepository = blogRepository;
}
public BlogModel get(int id)
{
//Thread.Sleep(1000); <-- breaks …Run Code Online (Sandbox Code Playgroud) knockout-mapping-plugin asp.net-web-api knockout.js durandal
我正在开发一个SPA webapplication有DurandalJS,但我不明白的东西.
让我们说我有page 1和2.在page 1一个模式中,在databasewith 中创建一个实体BreezeJS并返回一个密钥(在数据库中生成).
我想传递这个获取的密钥,然后转到我的第二页,第2页.我知道当我把它放在网址中时我该怎么做
http://localhost:60312/#/page2?orderid=2&repairorder=2
Run Code Online (Sandbox Code Playgroud)
但这不是方法Durandal,或者是它?用户可以输入他自己的一些后果!
我怎么解决这个问题?
我需要以本地化格式(SK)验证日期,并且无法进行淘汰验证.
我正在使用:Durandal 1.2.0 Knockout 2.3.0 Knockout验证https://github.com/Knockout-Contrib/Knockout-Validation
我需要这样的东西才能起作用:
var newStartDate = ko.observable()
.extend({
required: { message: 'Start date is required.' },
date: true,
formattedDate: { format: 'ddMMyyyy', delimiter: '.' }
});
Run Code Online (Sandbox Code Playgroud)
然后,如果我调用newStartDate.isValid(),我会得到以下结果:
newStartDate("");
false (OK)
newStartDate("test");
false (OK)
newStartDate("2013-02-02");
true (Bad)
newStartDate("2.2.2013");
false (Bad)
Run Code Online (Sandbox Code Playgroud)
结果应该是:
newStartDate("2013-02-02");
false
newStartDate("2.2.2013)"; // or "2. 2. 2013"
true
Run Code Online (Sandbox Code Playgroud)
我在扩展功能中有一些自定义验证的解决方案,但这不是我想要的.我想阻止上面的工作,它也更短.
我正在使用 Durandal 构建一个向导小部件,我想像这样使用它:
<div data-bind="wizard: options">
<!-- Step 1 -->
<span data-part="step-header-1">
Step 1
</span>
<div data-part="step-content-1">
step content here
</div>
<!-- Step 2 -->
<span data-part="step-header-2">
Step 2
</span>
<div data-part="step-content-2">
step content here
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是实际的小部件(为简洁起见,进行了删减):
<div class="wizard-container">
<ul class="steps" data-bind="foreach: steps">
<li>
<span data-bind="html: heading"></span>
</li>
</ul>
<!-- ko foreach: steps -->
<div class="wizard-step" data-bind="css: { active: isActive }">
<div data-bind="html: content">
</div>
</div>
<!-- /ko -->
</div>
Run Code Online (Sandbox Code Playgroud)
我已经让它工作了,使用 jQuery 获取数据部分,将数据部分的内部 HTML 分配给我的步骤模型上的属性,然后使用 html 绑定将内容绑定到每个步骤。这适用于 DOM 方面,但这样做意味着我的步骤内容不会进行数据绑定。我很确定这是因为我使用了 …
请帮忙.我正在尝试为durandal的对话框插件创建一个淘汰模板.有没有人可以给我一个基本的例子.以下是我的示例代码.但我不能让它工作..
(function (require) {
var app = require('durandal/app'),
unitofwork = require('services/unitofwork'),
dialog = require('plugins/dialog');
var self = this;
var uow = unitofwork.create();
var userlist = ko.observableArray();
var selecteduser = ko.observable();
ko.dialog = {
// Defines a view model class you can use to populate a grid
viewModel: {
selecteduser: selecteduser,
userlist: userlist,
ok: function () {
console.log(this.selecteduser());
dialog.close(this, this.selecteduser());
},
cancel: function () {
console.log(this.selecteduser());
dialog.close(this, "");
},
canDeactivate: function () {
return dialog.showMessage(this.selecteduser());
},
show: function () {
var …Run Code Online (Sandbox Code Playgroud) 我设法让一个简单的路由器工作,甚至为我的子菜单创建了一个子路由器,但有一两件事我不知道为什么他们在那里.文档给你一个基本的支持,然后你自己.
所以我正在阅读这里的文档:http:
//durandaljs.com/documentation/Using-The-Router.html
首先,提到"splat"路线,但它并没有真正解释它们是什么或如何使用它.你得到的只是JS的一个例子,没有显示它的使用方式,没有任何意义.我的假设是它们意味着在一条线上定义多条路线的某种通配符系统?虽然不完全确定.
其次,在定义子路由器时,他们在"type:'intro'"的路由上设置属性.没有提到为什么,它只在儿童路由器上看似相关.有谁知道这种类型的含义以及不同的值是什么?
总的来说,我对这个框架印象非常深刻.我已经设法让一个非常精致的webapp在任何时候都被淘汰出局.刚才我想要更深入地理解,文档并没有涵盖那么多细节.
编辑
挖掘我已经设法找到更多关于splat路线.它看起来像是从骨干和其他人复制的概念.
http://backbonetutorials.com/what-is-a-router/
基本上,如果我映射路径'section/*details',那么这条路线将匹配任何开始于/的路径/并且/之后的所有内容将作为一个名为details的参数传递.我看到这对子路由器有用,因为它可以确保深层链接能够正常工作.我们要确保对section/admin的请求首先发送到父路由器(部分/部分),然后发送到子路由器(admin).
仍然没有得到这种类型的参数.我无法在任何地方找到解释.
我是durundaljs的新手
我想知道如何过滤ko.observablearray
define(['services/logger','data/data','functions/func'],function(logger,data,func){var vm = {list:ko.observableArray([])}; return vm;} );
我想过滤列表中的项目并将其显示在表格中
谢谢
我如何在shell.js中监听视图更改事件?
我想在新视图激活时为标记生成href
我正在使用Durandal 2.x.
javascript jquery single-page-application durandal durandal-2.0
有一些关于谷歌地图api正确居中问题的帖子.我了解以下调整地图的大小:
google.maps.event.trigger(map, 'resize');
我能够在第一页显示的div元素内正确显示地图.但是,当导航回保存地图的html页面时,div中只显示一小部分地图.我遇到的问题是弄清楚如何合并这个调整大小的触发器.我是SPA和Durandal的新手,这是我负责地图的viewmodel:
define(['async!https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false'], function () {
var vm = {
title: 'Home View',
attached: initialize,
activate: function () {
toastr.success('Map View Activated');
}
};
return vm;
function initialize() {
var mapOptions = {
zoom: 10,
center: new google.maps.LatLng(-34.397, 150.644),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}
});
Run Code Online (Sandbox Code Playgroud) 从AnyLocation到MyCurrentLocation获取ETA(估计到达时间)的正确方法是什么?
我想,当使用点击任何注释时,我必须根据该注释和用户的当前位置在页脚上设置细节.
请参阅下面的图片以便更好地理解.
我看到了什么是从任何位置到我当前位置获得ETA(估计时间到达)的正确方法,这计算了用于覆盖Apple Maps中的旅程所花费的时间但是他们没有使用此解决我的问题.我总是得到Null响应使用它.我把我的代码放在下面: -
double latitude = -0.075410;
double longitude = 51.512520;
MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:CLLocationCoordinate2DMake(latitude, longitude) addressDictionary:nil] ;
MKMapItem *mapItemSource = [[MKMapItem alloc] initWithPlacemark:placemark];
double latitude1 = -0.132128;
double longitude1 = 51.464138;
MKPlacemark *placemark1 = [[MKPlacemark alloc] initWithCoordinate:CLLocationCoordinate2DMake(latitude1, longitude1) addressDictionary:nil] ;
MKMapItem *mapItemDestination = [[MKMapItem alloc] initWithPlacemark:placemark1];
MKDirectionsRequest *directionsRequest = [[MKDirectionsRequest alloc] init];
[directionsRequest setSource:mapItemSource];
[directionsRequest setDestination:mapItemDestination];
directionsRequest.transportType = MKDirectionsTransportTypeAutomobile;
MKDirections *directions = [[MKDirections alloc] initWithRequest:directionsRequest];
[directions calculateETAWithCompletionHandler:^(MKETAResponse *response, NSError *error) …Run Code Online (Sandbox Code Playgroud) 我试图使用knockout observable array在网页中显示大约5000条记录,这需要花费很多时间,
有没有办法处理这个没有分页?
请帮忙..
视图模型中的JS代码,数据来自gridData源中的ajax调用:
groupGrid.prototype.updateGrid = function (gridDataSource, groupGridOptions) {
var self = this;
self.ColumnName(groupGridOption.ColumnNameList); // List of column name available in the data source.
self.gridData(gridDataSource); // taking time while executing this code
self.totalRowCount(self.gridData().length);
self.selectedItems.removeAll();
self.selectedRowCount(0);
};
Run Code Online (Sandbox Code Playgroud)
HTML代码:
<tbody class="ngTBody" data-bind="foreach: gridData">
<tr class="ngdatarow">
<td>
<span class="nameHeader" data-bind="text: $data[$root.ColumnName()[0]], click: $root.gridNameClick" style="cursor: pointer; text-decoration: underline"></span>
</td>
<td>
<span class="displayBlock" data-bind="text: $data[$root.ColumnName()[1]]"></span>
</td>
<td>
<span class="displayBlock" data-bind="text: $data[$root.ColumnName()[3]"></span>
</td>
</tr>
</tbody>
Run Code Online (Sandbox Code Playgroud) 我在durandal项目工作.我在html中有span和button元素.我想在点击按钮时显示跨度.我的问题是,当我从html隐藏跨度时 - 它无法从javascript中显示它.我在你的网站上看到了这个问题(使用jquery链接更改标签标签的可见性),我尝试了所有的答案 - 任何帮助我.
(我尝试使用: in html:
<span id="mySpan" hidden = "hidden">aaa</span>
Run Code Online (Sandbox Code Playgroud)
要么:
<span id="mySpan" style= "visibility:collapse">aaa</span>
Run Code Online (Sandbox Code Playgroud)
要么:
<span id="mySpan" style= "display:none">aaa</span>
Run Code Online (Sandbox Code Playgroud)
在javascript中:
$("#mySpan").show();
Run Code Online (Sandbox Code Playgroud)
要么:
$("#mySpan").css('visibility', 'visible');
Run Code Online (Sandbox Code Playgroud)
我尝试了所有可选组合 )
注意:我希望您知道,当我不隐藏HTML的范围,并尝试使用toggle()时hide(),show()- 它运行良好.
不起作用的例子:
在html页面上:
<span id="mySpan" hidden = "hidden">aaa</span>
Run Code Online (Sandbox Code Playgroud)
在javascript页面上:
$("#mySpan").show();
Run Code Online (Sandbox Code Playgroud) durandal ×13
knockout.js ×6
javascript ×5
jquery ×3
durandal-2.0 ×2
google-maps ×2
asp.net ×1
breeze ×1
css ×1
date ×1
directions ×1
html ×1
ios ×1
objective-c ×1
validation ×1
widget ×1