我有一个自定义绑定来处理自动完成,当用户从自动完成中选择一个项目时,我会与服务器通信并用缩短的名称替换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时再次触发自定义绑定'更新'功能.
嗨,我在输入字段上有一个自动完成.从HTML视图调用它时工作正常,但使用Dialog调用时,下拉列表不会出现.如果我使用向上和向下键但数据会显示在下拉列表中,但我看不到下拉列表.我怎样才能使它工作?
我正在使用以下代码来验证用户在我的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) 我们在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中解决?我们确实有很多这样的自动选择,并且不想在所有视图上复制粘贴一些计算代码.所以我们想要一些单选项/扩展点.不幸的是,因为我可以看到选项绑定是相当单一的.
语境
我们有一个处理时间的C#程序。
我们在法国有客户,因此我们将时间与法国时区之间进行转换。
在我们的C#代码中:我们将其Central European Standard Time
用作法国的时区。
它描述了一个时区,该时区遵循DST更改:
我们的情况
问题是:法国在1996年与CEST保持一致;
在此日期之前,法国将在9月的最后一个星期日从夏季更改为冬季。
Window的CEST
时区(准确地)描述了CEST,在1995年10月之前的日期恰好不等于法国的时区。
当测试IANA数据库(在Windows子系统中为Linux)时,事实证明欧洲/巴黎时区在9月底准确地切换了<1995年的日期。
题
有没有:
Europe/Paris
在Window的标准时区列表中表示时区?我们用于将时间转换为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) 我想在我的ASP.NET WebForms应用程序(VS 2008)中使用不同版本的.js javascript文件:
有没有办法在调试时自动获取完整版本,并在应用程序部署到生产时缩小版本?我不介意答案是否是黑客.
在VS 2010中有可能吗?
javascript asp.net debugging visual-studio visual-studio-debugging
我想创建一个自定义绑定作为添加其他绑定的简写 - 如宏.
<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) 给定一个具有任意属性的简单类(讨论可以说是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就足够了,但是我的用例包括遍历一组对象并找到每个对象的匹配,因此在运行时之前不会知道该值,并且该方法必须对任意类型和各种属性起作用,因此我也不能对属性名称进行硬编码.
我已经看到了其他线索,但我仍然感到困惑,我想我在这里提出了一个不同的案例.
我正在使用显示模式将视图模型对象返回到我的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)
我的问题:
请注意,在引用customProperty
data-bind属性中的值时,我没有使用括号.为什么不要求括号?
我发现使用括号也有效:
我理解为什么使用括号工作(因为我正在读取Knockout observable的值).但为什么括号不需要呢?换句话说,为什么第1点的数据绑定表达式会起作用?
最后,这项任务实际发生了什么?
var customProperty = ko.numericObservable(0);
customProperty
最终是否持有一个指向函数的指针customProperty()
?
有没有办法从自定义绑定内部绑定元素?例如,我有自定义绑定并绑定到它可观察的项目数组:
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 ×5
asp.net ×2
c# ×2
javascript ×2
autocomplete ×1
data-binding ×1
datetime ×1
debugging ×1
jquery ×1
jquery-ui ×1
lambda ×1
linq ×1
servicestack ×1
timezone ×1
windows ×1