小编Jot*_*aBe的帖子

Knockout.js - 如何限制自定义绑定

我有一个自定义绑定来处理自动完成,当用户从自动完成中选择一个项目时,我会与服务器通信并用缩短的名称替换text_field.问题是这会第二次触发我的自定义绑定的"更新"功能.

Knockout.js代码(编辑:注意以下是CoffeeScript):

ko.bindingHandlers.ko_autocomplete =
  init: (element, params) ->
    $(element).autocomplete(params())

  update: (element, valueAccessor, allBindingsAccessor, viewModel) ->
    unless task.name() == undefined
      $.ajax "/tasks/name",
        data: "name=" + task.name(),
        success: (data,textStatus, jqXHR) ->
          task.name(data.short_name)


  Task = ->
    @name = ko.observable()
    @name_select = (event, ui) ->
      task.name(ui.item.name)
      false  

  task = Task.new()
Run Code Online (Sandbox Code Playgroud)

视图

= f.text_field :name, "data-bind" => "value: name, ko_autocomplete: { source: '/autocomplete/tasks', select: name_select }"
Run Code Online (Sandbox Code Playgroud)

有没有办法将油门应用于自定义绑定?

我只想在将task.name设置为从服务器发回的short_name时再次触发自定义绑定'更新'功能.

knockout.js ko-custom-binding

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

自动完成功能无法在Dialog中使用

嗨,我在输入字段上有一个自动完成.从HTML视图调用它时工作正常,但使用Dialog调用时,下拉列表不会出现.如果我使用向上和向下键但数据会显示在下拉列表中,但我看不到下拉列表.我怎样才能使它工作?

jquery jquery-ui autocomplete jquery-ui-dialog

5
推荐指数
3
解决办法
5584
查看次数

服务栈:类型定义应该以'{'开头,期望序列化类型'AuthResponse',从字符串开始

我正在使用以下代码来验证用户在我的asp.net应用程序中使用ServiceStack基本身份验证提供程序并接收serration异常.如果有人解决了这个问题,请回答.谢谢.

我在我的asp.net应用程序中使用以下代码:

<asp:Button ID="btnAuth" runat="server" OnClick="btnAuth_Click" Text="Authenticate"/>
Run Code Online (Sandbox Code Playgroud)

我在代码隐藏文件中的clien.Post方法上收到异常.

protected void btnAuth_Click(object sender, EventArgs e)
        {
            try
            {                
                var baseUrl = Request.Url.GetLeftPart(UriPartial.Authority) + "/api";
                var client = new JsonServiceClient(baseUrl);
                var authResponse = client.Post<AuthResponse>(new Auth { UserName = "admin", Password = "12345" });
                if (authResponse.ResponseStatus.ErrorCode == null)
                {
                   //Do Something here
                }
            }
            catch (WebServiceException ex)
            {
                throw ex;
            }
        }
Run Code Online (Sandbox Code Playgroud)

Followin是我在clien.Post方法上收到的Exeception Detail :

[SerializationException: Type definitions should start with a '{', expecting serialized type 'AuthResponse', got string …
Run Code Online (Sandbox Code Playgroud)

asp.net servicestack

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

淘汰赛:如何从自定义绑定更新另一个绑定?

我们在optionsCaption绑定方面遇到常见问题:即使只有一个元素也会显示它.我们使用自定义绑定解决了这个问题:

ko.bindingHandlers.optionsAutoSelect = {
    update: function (element, valueAccessor, allBindingsAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        var allBindings = allBindingsAccessor();

        if (value.length == 1) {
            allBindings.optionsCaption = null;
        }
        ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor);
    }
};
Run Code Online (Sandbox Code Playgroud)

在更新到knockout 3.0之后,allBindings变为readonly.因此,任何更改都会被跳过.任何想法如何在ko 3.0中解决?我们确实有很多这样的自动选择,并且不想在所有视图上复制粘贴一些计算代码.所以我们想要一些单选项/扩展点.不幸的是,因为我可以看到选项绑定是相当单一的.

knockout.js ko-custom-binding

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

我应该在法国使用哪个时区来支持新旧夏令时调整?

语境

我们有一个处理时间的C#程序。

我们在法国有客户,因此我们将时间与法国时区之间进行转换。

在我们的C#代码中:我们将其Central European Standard Time用作法国的时区。

它描述了一个时区,该时区遵循DST更改:

  • 在3月的最后一个星期日(凌晨3点),时钟旋转到夏令时向前移动1小时
  • 在10月的最后一个星期日(凌晨3点),时钟切换为冬季时间,并向后移动1小时

我们的情况

问题是:法国在1996年与CEST保持一致;
在此日期之前,法国将在9月的最后一个星期日从夏季更改为冬季。

Window的CEST时区(准确地)描述了CEST,在1995年10月之前的日期恰好不等于法国的时区。

当测试IANA数据库(在Windows子系统中为Linux)时,事实证明欧洲/巴黎时区在9月底准确地切换了<1995年的日期。

有没有:

  • Europe/Paris在Window的标准时区列表中表示时区?
  • 一种从C#使用IANA数据库(和欧洲/巴黎)的方法?

我们用于将时间转换为UTC的示例代码:

using System;
using System.Globalization;

namespace TestingApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var tz = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
            string[] times = {
                // In 1995 :
                //  last sunday in september was  sept. 24th
                //  last sunday in october   was   oct. 29th
                "1995/09/23 12:00:00", "1995/09/24 12:00:00",
                "1995/10/28 …
Run Code Online (Sandbox Code Playgroud)

c# windows timezone datetime

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

是否可以在Web应用程序中使用不同的javascript文件进行调试和生成?

我想在我的ASP.NET WebForms应用程序(VS 2008)中使用不同版本的.js javascript文件:

  • 完整的版本,评论等等
  • 缩小版,用于制作

有没有办法在调试时自动获取完整版本,并在应用程序部署到生产时缩小版本?我不介意答案是否是黑客.

在VS 2010中有可能吗?

javascript asp.net debugging visual-studio visual-studio-debugging

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

knockout:在自定义绑定init中添加另一个绑定

我想创建一个自定义绑定作为添加其他绑定的简写 - 如宏.

<div data-bind="foo: 1"></div>
Run Code Online (Sandbox Code Playgroud)

应该做同样的事情

<div data-bind="click: clickHandler, css: { someClass: someObservable }, ...">
</div>
Run Code Online (Sandbox Code Playgroud)

就像是:

ko.bindingHandlers.foo = {
    init: function(el,val,bindings,model,context) {
        // some way to add { click: clickHandler } to bindings()
    }
}
Run Code Online (Sandbox Code Playgroud)

knockout.js ko-custom-binding

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

合并属性选择器表达式树和值以创建EF过滤的谓词 - 从lambda选择器和值创建过滤器

给定一个具有任意属性的简单类(讨论可以说是Id,Name和Description)

并且给定该类的实例,我想通过指定要匹配的属性来在数据库中找到匹配的条目

我试图在这方面做一些类似于EF的AddOrUpdate方法的事情,但我需要实体返回给我进行进一步处理.

var match = new SomeClass{Name="Whatever"};
var found = Context.SomeClass.Find(x=>x.Name, match);

public static T Find<T>(this DbSet<T> set, Expression<Func<T, object>> matchOn, T matchAgainst) where T : class {
  var func = matchOn.Compile();
  var valueToFind = func(matchAgainst);


 var combinedExpression = //matchon + "=" + valueToFind;
 var found = set.FirstOrDefault(combinedExpression);
 return found;
 }
Run Code Online (Sandbox Code Playgroud)

这给了我传入的对象中属性的值,但我现在需要将该值与传入的表达式组合并将其传递给数据库集.

IE浏览器,我试图有效运行的代码是 set.FirstOrDefault(x=>x.Name==valueToFind)如何把matchon表达式(包含x=>x.Name),并结合起来,与将==valueToFind得到x=>x.Name==valueToFind来自他们?

如何构建组合表达式?(我意识到上面的"字符串"代码是完全错误的,但我试图了解我需要该函数做什么,但我不知道那个语法会是什么样子.)

对于手动编码的示例,只需传入带有值集的硬编码lambda就足够了,但是我的用例包括遍历一组对象并找到每个对象的匹配,因此在运行时之前不会知道该值,并且该方法必须对任意类型和各种属性起作用,因此我也不能对属性名称进行硬编码.

c# linq lambda entity-framework expression-trees

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

何时使用或不在数据绑定表达式中使用带有observable的括号

我已经看到了其他线索,但我仍然感到困惑,我想我在这里提出了一个不同的案例.

我正在使用显示模式将视图模型对象返回到我的HTML文档.因此,我有一个看起来像这样的视图模型对象:

var vm = function() {
   var customProperty = ko.numbericObservable(0);

   return {
      customProperty: customProperty
   };
} ();
Run Code Online (Sandbox Code Playgroud)

从这里,您可以看到customProperty被分配给初始值为0的Knockout数字observable.

在包含上面的JavaScript的HTML文档中,我有一个带有data-bind属性的SPAN元素,该属性订阅了customProperty observable,如下所示:

<span data-bind="text: customProperty" 
  id="customProperty" style="font-weight:bold"></span>
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.上面的工作正常,这意味着每当我在脚本中更改customProperty的值时,SPAN中的文本立即更新.例如,我可以成功轻松地使用此表达式将customProperty observable的值从0更改为10:

vm.customProperty(10);
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 请注意,在引用customPropertydata-bind属性中的值时,我没有使用括号.为什么不要求括号?

  2. 我发现使用括号也有效:

我理解为什么使用括号工作(因为我正在读取Knockout observable的值).但为什么括号不需要呢?换句话说,为什么第1点的数据绑定表达式会起作用?

  1. 最后,这项任务实际发生了什么?

    var customProperty = ko.numericObservable(0);

customProperty最终是否持有一个指向函数的指针customProperty()

javascript data-binding knockout.js javascript-databinding

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

我可以在自定义绑定中动态绑定元素吗?

有没有办法从自定义绑定内部绑定元素?例如,我有自定义绑定并绑定到它可观察的项目数组:

var someArrayOfItems = ko.observableArray(['item1', 'item2', 'item3']);
...
<div data-bind="myBinding: someArrayOfItems"></div>
Run Code Online (Sandbox Code Playgroud)

现在我希望myBinding列出它被绑定的div元素中的'someArrayOfItems'中的所有元素:

<ul data-bind="foreach: someArrayOfItems">
    <li>
        <span data-bind="text: $data"></span>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

是否可以使用自定义绑定进行此类操作?谢谢你的帮助.

knockout.js ko-custom-binding

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