小编Cli*_*int的帖子

如何在初始vue.js/vue-router加载时加载所有服务器端数据?

我目前正在使用WordPress REST API和vue-router在小型单页网站上的页面之间进行转换.但是,当我使用REST API对服务器进行AJAX调用时,数据会加载,但只有在页面已经呈现之后才会加载.

VUE路由器文档提供了深入了解在关于如何前和导航到各航线后加载数据,但我想知道如何加载在初始页面加载的所有路线和页面数据,环游需要加载每个数据路线被激活的时间.

注意,我正在将我的数据加载到acf属性中,然后使用在.vue文件组件中访问它this.$parent.acfs.

main.js路由器代码:

const router = new VueRouter({
    routes: [
        { path: '/', component: Home },
        { path: '/about', component: About },
        { path: '/tickets', component: Tickets },
        { path: '/sponsors', component: Sponsors },
    ],
    hashbang: false
});

exports.router = router;

const app = new Vue({
    router,
    data: {
        acfs: ''
    },
    created() {
        $.ajax({
            url: 'http://localhost/placeholder/wp-json/acf/v2/page/2',
            type: 'GET',
            success: function(response) {
                console.log(response);
                this.acfs = response.acf;
                // this.backgroundImage …
Run Code Online (Sandbox Code Playgroud)

javascript ajax wordpress jquery vue.js

30
推荐指数
4
解决办法
2万
查看次数

FlowLayoutPanel仅在垂直方向上自动调整大小?

我正在动态加载图像FlowLayoutPanel.我需要这个面板自动调整尺寸,但只能垂直调整.

这是可能的,如果是这样,我该如何实现它?

c# visual-studio winforms

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

当谓词计算为true时,F#停止Seq.map

我正在以类似的方式生成序列:

migrators
|> Seq.map (fun m -> m())
Run Code Online (Sandbox Code Playgroud)

migrator函数最终返回一个受歧视的联合,如:

type MigratorResult =
| Success of string * TimeSpan
| Error of string * Exception
Run Code Online (Sandbox Code Playgroud)

我希望在map遇到我的第一次时停止,Error但我需要Error在最后的序列中加入.

我有以下内容向用户显示最终消息

match results |> List.rev with
| [] -> "No results equals no migrators"
| head :: _ ->
   match head with
   | Success (dt, t) -> "All migrators succeeded"
   | Error (dt, ex) -> "Migration halted owing to error"
Run Code Online (Sandbox Code Playgroud)

所以我需要:

  1. 一种在其中一个映射步骤产生映射时停止映射的方法 Error
  2. 将错误作为添加到序列的最后一个元素的方法

我很欣赏可能有一个不同的序列方法,除此之外map,我会对F#不熟悉并且在线搜索还没有产生任何东西!

f# map seq

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

在WPF MVVM中使用ReactiveUI获取属性更改的优先值

我正在使用Reactive UI进行MVVM WPF项目,当属性发生变化时我需要知道:

  1. 变更前的值
  2. 新价值(即变化)

我有一个viewmodel(Deriving from ReactiveObject),其上声明了一个属性:

private AccountHolderType _accountHolderType;
public AccountHolderType AccountHolderType
{
   get { return _accountHolderType; }
   set { this.RaiseAndSetIfChanged(ref _accountHolderType, value); }
}
Run Code Online (Sandbox Code Playgroud)

在构造函数中,我正在尝试执行以下操作:

this.WhenAnyValue(vm => vm.AccountHolderType)
   .Subscribe((old,curr) => { // DO SOMETHING HERE });
Run Code Online (Sandbox Code Playgroud)

但是该WhenAnyValue方法没有这样的过载,并且Reactive文档非常缺乏.

可以访问一个简单的WhenAnyValue:

this.WhenAnyValue(vm => vm.AccountHolderType)
   .Subscribe(val => { // DO SOMETHING HERE });
Run Code Online (Sandbox Code Playgroud)

这让我可以观察更改并获得最新的更改,但我需要访问先前的值.

我知道我可以将它作为一个简单的属性来实现,这样:

public AccountHolderType AccountHolderType
{
   get { // }
   set
   {
      var prev = _accountHolderType;
      _accountHolderType = value;

      // Do …
Run Code Online (Sandbox Code Playgroud)

c# wpf reactiveui

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

以反应方式在窗口关闭时显示确认

我有一个observable,我用它来显示一个确认对话框,大致是签名:

IObservable<DialogResult> ShowDialog(string title, string message);
Run Code Online (Sandbox Code Playgroud)

这向用户显示了对话框,带有是/否按钮组合.

在我的主窗口中,我正在访问结束事件:

this.Events().Closing.[Do something here]
Run Code Online (Sandbox Code Playgroud)

我希望能够:

  1. 触发关闭observable时显示确认对话框
  2. CancelEventArgs.Cancel如果用户单击"否"按钮,则将该属性设置为true.

我试过直接订阅:

this.Events().Closing.Subscribe(e =>
{
    var res = Dialogs.ShowDialog("Close?", "Really Close?").Wait();
    e.Cancel = res == DialogResult.Ok;
});
Run Code Online (Sandbox Code Playgroud)

但是因为这个Wait()电话而挂起,我也尝试过异步变种:

this.Events().Closing.Subscribe(async e =>
{
    var res = await Dialogs.ShowDialog("Close?", "Really Close?");
    e.Cancel = res == DialogResult.Ok;
});
Run Code Online (Sandbox Code Playgroud)

哪个不好,因为它马上就会回来.

我真正想要做的是:

this.Events().Closing.ThenDo(_ => Dialogs.ShowDialog("Close?", "Really Close?"))
    .Subscribe((cancelEventArgs, dialogResult) =>
    {
        cancelEventArgs.Cancel == dialogResult == DialogResult.Ok;
    });
Run Code Online (Sandbox Code Playgroud)

但这不存在,我知道这里的关键在于我如何组合这两个可观察量,但我不知道如何这样做,而且文档对实际例子有点了解.

c# wpf mvvm reactiveui

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

Asp.net 5 web api返回状态码和正文

我正在使用ASP.NET 5开发一个项目,我正在编写一个web api.

我继承了一些代码和数据库存储过程,使用raiserror来指示错误(用户名/密码不正确,许可证过期等).

除消息文本外,存储过程不返回任何内容以唯一标识该错误.

我希望能够返回HTTP UNAUTHORIZED响应,但也将错误消息传递给客户端.

内置IActionResult HttpUnauthorized()方法不允许给出理由.

所以我编写了自己的ActionResult,如下所示:

public class UnauthorizedWithMessageResult : IActionResult
{
    private readonly string _message;

    public UnauthorizedWithMessageResult(string message)
    {
        _message = message;
    }

    public async Task ExecuteResultAsync(ActionContext context)
    {
        using (var sw = new HttpResponseStreamWriter(context.HttpContext.Response.Body, Encoding.UTF8))
        {
            await sw.WriteLineAsync(_message);
        }

        await new HttpUnauthorizedResult().ExecuteResultAsync(context);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是客户端正在接收200-OK,就像一切都很好.

我已经完成了这个步骤,在完成委托之后HttpUnauthorizedResult,状态代码确实设置为403.

看起来Web API(在某些时候)看到响应正文中有内​​容,并确定这意味着一切正常并重置状态代码.

有没有办法解决这个问题,而不必诉诸于作为标题或其他东西发送消息?(或者这是正确的方法吗?)

c# asp.net-web-api2 asp.net-core

6
推荐指数
2
解决办法
3221
查看次数

Excel自定义任务窗格未显示

我正在excel VSTO加载项中显示一个自定义任务窗格,正在构建它并显示为:

var ctrl = new CellTaskPane();
var pane = CustomTaskPanes.Add(ctrl, "Custom Sheet");
pane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight;
pane.DockPositionRestrict = Office.MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoChange;
pane.Visible = true;
Run Code Online (Sandbox Code Playgroud)

这是在ThisAddin.cs文件中完成的,并且在Debug会话下以及通过单击一次安装程序安装的加载项下,都可以在我的计算机上正常运行。

但是,将加载项安装到同事的机器上被证明很麻烦。

加载项正在运行,并且上下文菜单/功能区运行正常,但是窗格只是拒绝显示。

我在功能区上有一个切换按钮,可以切换Visible窗格上的属性,甚至单击也不会强制窗格显示。

任何帮助都将不胜感激,谷歌对此毫无用处。

谢谢。


我应该提一下,这CellTaskPane只是UserControlMSDN上的文档所规定的:http : //msdn.microsoft.com/en-us/library/aa942846.aspx

excel vsto excel-addins customtaskpane excel-2013

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

F#"​​有状态"计算表达式

我正在学习F#并且遇到一些绊脚石; 我认为很多是学习功能性思考.

我目前正在学习的一件事是计算表达式,我希望能够定义一个处理某些跟踪状态的计算表达式,例如:

let myOptions = optionListBuilder {
    let! opt1 = {name="a";value=10}
    let! opt2 = {name="b";value=12}
}
Run Code Online (Sandbox Code Playgroud)

我希望能够拥有它,这样myOptions是一个Option<'T> list,所以每个let!绑定操作有效地使建设者"跟踪"的定义选项,它会沿着.

我不想使用可变状态来执行此操作 - 例如,使用由构建器维护的列表并使用每个bind调用进行更新.

有没有办法让它成为可能?


更新:结果Option<'T> list类型只是代表性的,实际上我可能有一个OptionGroup<'T>类型来包含列表以及一些其他信息 - 正如Daniel在下面提到的,我可以使用列表理解来获得一个简单的列表.

f# functional-programming computation-expression

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

部分延迟计算构建器

我正在尝试研究如何使用计算构建器来表示延迟的嵌套步骤集.

到目前为止我有以下内容:

type Entry =
    | Leaf of string * (unit -> unit)
    | Node of string * Entry list * (unit -> unit)

type StepBuilder(desc:string) =
    member this.Zero() = Leaf(desc,id)
    member this.Bind(v:string, f:unit->string) =
        Node(f(), [Leaf(v,id)], id)
    member this.Bind(v:Entry, f:unit->Entry) =
        match f() with
        | Node(label,children,a) -> Node(label, v :: children, a)
        | Leaf(label,a) -> Node(label, [v], a)


let step desc = StepBuilder(desc)

let a = step "a" {
    do! step "b" {
        do! step "c" {
            do! step …
Run Code Online (Sandbox Code Playgroud)

monads f# computation-expression deferred

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

TPL队列处理

我目前正在开发一个项目,我需要排队一些工作进行处理,这是要求:

  1. 必须一次处理一个作业
  2. 必须能够等待排队的项目

所以我想要类似于:

Task<result> QueueJob(params here)
{
   /// Queue the job and somehow return a waitable task that will wait until the queued job has been executed and return the result.
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过后台运行任务,只是将项目从队列中拉出来并处理作业,但难度是从后台任务到方法.

如果需要的话,我可以在QueueJob方法中使用刚刚请求完成回调的路径,但是如果我能得到一个透明的任务可以让你等待处理工作(即使有工作)也会很棒在它排队之前).

c# queue task-parallel-library

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