小编Mat*_*mes的帖子

KnockoutJS:使用'html'绑定,新元素不绑定

我有一个视图模型,其中包含一个代表div的conent的ko.observable,如下所示:

function claimContainerViewModel(elem, api) {
    this.content = ko.observable('<somecontent>');
}
Run Code Online (Sandbox Code Playgroud)

稍后,我使用AJAX调用更新该内容,并且我有一个带有以下绑定的div:

<div id="ClaimContainer" data-bind="html: content">
Run Code Online (Sandbox Code Playgroud)

为'content'返回的HTML具有自己的数据绑定,这就是问题:这些绑定都没有被解析.根据Knockout和我读过的每一个消息来源,这应该发生.当使用'html'绑定时,KO应该足够聪明以进行重新绑定.

这是KO 2.2.0中的一个错误(这个版本我第二次被困住了),还是我误解了html绑定处理程序是如何工作的?在任何人问之前,没有applyBindings在这种情况下不会起作用,因为容器使用了一个html绑定,applyBindings假设应该处理重新绑定本身(我已经通过单步调试KO的代码来证实这一点).

javascript knockout.js

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

std :: shared_ptr - 将共享指针作为参数传递的最佳实践

我已经远离严肃的C++大约十年了.我正在重新回到目前,我正在开展一个项目,以完全熟悉C++ 11.我有一个关于如何最好地传递std :: shared_ptr的存在主义危机.

举一个简单的例子,采取以下设置:

class ServiceB {
public:
    ServiceB() {}
};

class ServiceA {
public:
    ServiceA(std::shared_ptr<ServiceB>& serviceB)
        : _serviceB(serviceB) {

    }

private:
    std::shared_ptr<ServiceB> _serviceB;
};

class Root {
public:
    Root()
        : _serviceB(std::shared_ptr<ServiceB>(new ServiceB())),
        _serviceA(std::unique_ptr<ServiceA>(new ServiceA(_serviceB))) {

    }

private:
    std::shared_ptr<ServiceB> _serviceB;
    std::unique_ptr<ServiceA> _serviceA;
};
Run Code Online (Sandbox Code Playgroud)

请注意,ServiceA需要引用ServiceB.我想将该引用保存在shared_ptr中.我可以做我在这里做的事情,这只是将shared_ptr作为参考传递下去,让std :: shared_ptr复制构造函数为我工作吗?这是否正确地增加了shared_ptr上的引用计数?

如果这不是最好的方法,那么传递std :: shared_ptr的常见"最佳实践"是什么?

c++ c++11

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

WPF中的自定义依赖项属性和TwoWay绑定

我们有一个派生自DependencyObject的对象,并实现了一些DependencyProperties.

基本上是这样的:

class Context : DependencyObject {
   public static readonly DependencyProperty NameProperty =
   DependencyProperty.Register ("Name", typeof (string), typeof (Context), new PropertyMetadata (""));
    public string Name {
        get {
            return (string)this.GetValue (NameProperty);
        }
        set {
            this.SetValue (NameProperty, value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,属性设置,可以绑定等.当我使用TwoWay绑定从WPF绑定到属性时问题出现了.TwoWay部分从未实际发生过,WPF从不调用此属性的集合.我已经设置了这样的绑定:

<TextBox Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)

在这种情况下,键入文本框应立即更新Name属性,但不会.如果我将Name属性更改为常规POCO属性,它就可以工作(尽管TwoWay的另一面显然不会,除非我实现了INotifyPropertyChanged).

我在这做错了什么?这应该是一件非常简单的事情,但它让我头疼不已.

data-binding wpf dependency-properties

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

LINQ to SQL:对延​​迟加载的关联进行加载处理

如果我有一个延迟加载与非常大的对象的关联的对象,有没有办法在延迟加载时进行处理?我以为我可以使用DataLoadOptions中的AssociateWith或LoadWith,但是对于你可以在那些中做什么有非常非常具体的限制.基本上我需要在EntitySet <>决定加载关联对象的时候得到通知,所以我可以捕获该事件并对加载的对象进行一些处理.我不想在加载父对象时简单地遍历EntitySet,因为这将强制加载所有延迟加载的项目(完全失去延迟加载的目的).

.net c# linq-to-sql

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

BeginRouteForm 不适用于 API 路由?

我有一个我试图用相对简单的代码创建的表单:

@using (Ajax.BeginRouteForm("DefaultApi", new { controller = "persons" }, new AjaxOptions {HttpMethod = "post", OnSuccess = "someSuccess"}))}
{
    @Html.TextBoxFor(m => m.Name)
}
Run Code Online (Sandbox Code Playgroud)

我有一个 PersonsController,它是一个 ApiController,我在 WebApiConfig 中有以下路由:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

但是 BeginRouteForm 调用不返回任何操作。生成的 HTML:

<form action="" data-ajax="true" data-ajax-method="post" data-ajax-success="someSuccess" id="form0" method="post">
</form>
Run Code Online (Sandbox Code Playgroud)

如您所见,该操作为空。它不是在抱怨它找不到路线(如果它找不到,它会抱怨),那么发生了什么?我什至尝试在 routeValues 对象中提供一个空的 id,但这也不起作用(尽管它不应该是必需的,因为 id 是可选的)。

我在这里缺少什么?您不能将 BeginRouteForm 与通过 MapHttpRoute 添加的路由一起使用吗?行为与 Html.BeginRouteForm 和 Ajax.BeginRouteForm 相同(它们应该具有相同的基础)。显然,在这种情况下,我希望该操作返回 '/api/persons'。

c# asp.net-mvc-routing asp.net-mvc-4 asp.net-web-api asp.net-web-api-routing

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

为什么生成的XAML会吐出不需要的命名空间?

我有一个非常简单的XAML表单,它有一个名称空间定义.出于某种原因,当Visual Studio将XAML文件处理到它的组件.g.cs时,它在顶部粘贴了一堆我没有在XAML或后面的代码中要求的命名空间定义,并且它们是名称空间在我的项目中不再存在.因此该项目无法编译.

为什么Visual Studio在生成的XAML .g.cs文件中粘贴任意名称空间'using'语句?这导致我的整个项目破裂.这个.xaml文件没有一次引用有问题的名称空间,所以它更加令人讨厌.

wpf xaml visual-studio

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