标签: durandal

Breeze.js WebApi OData和Durandal

我正在尝试使用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)

asp.net asp.net-web-api knockout.js breeze durandal

1
推荐指数
1
解决办法
1497
查看次数

长ajax叫打破淘汰赛绑定

我正在创建一个使用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

1
推荐指数
1
解决办法
1372
查看次数

将DurandalJS中的数据传递给其他视图

我正在开发一个SPA webapplicationDurandalJS,但我不明白的东西.

让我们说我有page 12.在page 1一个模式中,在databasewith 中创建一个实体BreezeJS并返回一个密钥(在数据库中生成).

我想传递这个获取的密钥,然后转到我的第二页,第2页.我知道当我把它放在网址中时我该怎么做

http://localhost:60312/#/page2?orderid=2&repairorder=2
Run Code Online (Sandbox Code Playgroud)

但这不是方法Durandal,或者是它?用户可以输入他自己的一些后果!

我怎么解决这个问题?

single-page-application durandal

1
推荐指数
2
解决办法
4210
查看次数

淘汰赛日期验证无法正常工作

我需要以本地化格式(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)

我在扩展功能中有一些自定义验证的解决方案,但这不是我想要的.我想阻止上面的工作,它也更短.

javascript validation date knockout.js durandal

1
推荐指数
1
解决办法
7985
查看次数

Durandal 小部件、动态模板部件

我正在使用 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 方面,但这样做意味着我的步骤内容不会进行数据绑定。我很确定这是因为我使用了 …

javascript jquery widget knockout.js durandal

1
推荐指数
1
解决办法
3832
查看次数

杜兰德对话

请帮忙.我正在尝试为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)

knockout.js durandal

1
推荐指数
1
解决办法
6531
查看次数

Durandal js路由器设置

我设法让一个简单的路由器工作,甚至为我的子菜单创建了一个子路由器,但有一两件事我不知道为什么他们在那里.文档给你一个基本的支持,然后你自己.

所以我正在阅读这里的文档: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).

仍然没有得到这种类型的参数.我无法在任何地方找到解释.

javascript durandal durandal-2.0

1
推荐指数
1
解决办法
1792
查看次数

Durandaljs:如何过滤ko.observablearray

我是durundaljs的新手

我想知道如何过滤ko.observablearray

define(['services/logger','data/data','functions/func'],function(logger,data,func){var vm = {list:ko.observableArray([])}; return vm;} );

我想过滤列表中的项目并将其显示在表格中

谢谢

asp.net-mvc-4 single-page-application durandal

0
推荐指数
1
解决办法
2458
查看次数

shell.js中的Durandal viewChanged事件

我如何在shell.js中监听视图更改事件?

我想在新视图激活时为标记生成href

我正在使用Durandal 2.x.

javascript jquery single-page-application durandal durandal-2.0

0
推荐指数
1
解决办法
215
查看次数

Durandal SPA谷歌地图API地图中心

有一些关于谷歌地图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)

google-maps durandal

0
推荐指数
1
解决办法
646
查看次数

iOS中两个位置之间的估计时间

从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)

google-maps objective-c ios directions durandal

0
推荐指数
1
解决办法
4608
查看次数

使用knockout绑定约5000条记录

我试图使用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)

ko.observablearray knockout.js durandal

-1
推荐指数
2
解决办法
1435
查看次数

使用jquery更改span的可见性

我在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)

html javascript css jquery durandal

-2
推荐指数
2
解决办法
8万
查看次数