小编She*_*ock的帖子

'Undestroy'在Knockout中的一个对象

我在一个名为"Deletions"的observableArray中跟踪已删除的对象.我在UI中解析该数组以创建"撤消删除"链接,但我无法使其工作.代码非常简单,看起来像这样:

this.removePage = function(page){
    self.formBuilder.pages.destroy(page);
    var newDeletion = new Deletion();
    newDeletion.element(page);
    self.deletions.push(newDeletion);
}

this.removeFormElement = function(element){
    self.formElements.destroy(element);
    var newDeletion = new Deletion();
    newDeletion.element(element);
    builder.deletions.push(newDeletion);
}

var Deletion = function(){
    var self = this;
    this.element = ko.observable();
};
Run Code Online (Sandbox Code Playgroud)

请注意,可以将不同类型的元素添加到Deletions observableArray中.我需要在'unremove'函数中做的唯一事情就是将'destroy'标志设置为false.但是,我无法让它工作:

this.unremovePage = function(deletion){
    deletion.element()._destroy(false);
}
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

编辑

我不能让它适用于嵌套的FormElements.结构是:我的主ViewModel被称为'FormBuilder'.FormBuilder有多个页面(这些是ViewModel本身),每个页面都有多个FormElements(参见上面的代码片段).

我可以"取消删除"那些FormElements,但我不知道如何强制刷新它们.

this.unremove = function(deletion){
    //console.log(deletion.element);
    deletion.element()._destroy = false;
    self.deletions.remove(deletion);
    self.formBuilder.pages.valueHasMutated(); // works
    deletion.element().valueHasMutated(); // this doesn't work 
    self.formBuilder.pages.indexOf(deletion.element()).valueHasMutated(); // neither does this
    self.deletions.valueHasMutated(); // works
};
Run Code Online (Sandbox Code Playgroud)
  • FormBuilder是主要的ViewModel;
  • FormBuilder有一个名为Pages的observableArray,每个Page都是一个ViewModel;
  • 每个Page都有一个名为FormElements的observableArray,每个FormElement都是一个ViewModel;
  • FormBuilder有一个名为Deletions的observableArray,每个Deletion都是一个ViewModel,每个Deletion都包含一个元素,一个是Page或一个FormElement.

问题:我使用函数'unremove'将元素的'destroy'属性(Page或FormElement)设置为false.如您所见,然后我在页面上调用'valueHasUpdated'.但是如何在observableArray上调用formElements …

javascript knockout.js

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

防止项目在其他(父/子)元素中"可放置"

我使用knockout-sortable.js让用户拖放项目给他们一个不同的顺序,但是当我在我的页面上有多个"drop zone"时,我遇到了问题.我有嵌套集,所有这些集都是可排序的,但不可互换.

我的代码:

    <div class="sortable" data-bind="sortable: blueprint.pages">
          <tr><td>Blabla</td></tr>
    </div>
Run Code Online (Sandbox Code Playgroud)

在其他一些方面:

    <div class="sortable" data-bind="sortable: selectedPage().page_sections">
          <tr><td>Another blabla</td></tr>
    </div>
Run Code Online (Sandbox Code Playgroud)

我现在可以将'Another blabla'拖放到'Blabla'中,导致错误.我怎样才能防止这种情况发生?

knockout.js knockout-sortable

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

Git将文件夹视为文件,并忽略所有子文件夹和-files

我在Git中遇到一个奇怪的问题。我使用Composer在应用程序中包含TCPDF,但无法将其添加到我的存储库中。

这是我的逐步操作:

在此处输入图片说明

现状。这些只是插件;它缺少我需要的“ tcpdf”文件夹。

现在,我运行Composer使其安装附加目录。

在此处输入图片说明

在这张照片中,已经很清楚有些问题。Composer下载了所有文件和文件夹,并且TCPDF在我的计算机上正常运行,但是只有tcpdf文件夹显示为红色。子文件夹不是!我转到命令行并执行“ git add。”,以便它添加所有文件和文件夹。现在看起来像这样:

在此处输入图片说明

还是错。

错误状态反映为git status

在此处输入图片说明

我真的被困在这里。我不知道如何告诉Git这不是文件而是文件夹。我的仓库很完美,但是如果我的同事更新,他只会得到此文件,而不会包含文件夹内容。

我该如何解决?

git tcpdf composer-php

2
推荐指数
3
解决办法
575
查看次数

PHPStorm无视@deprecated评论

我通过将@deprecated添加到docBlock来弃用我的项目中的方法,期望PHPStorm在解决该特定方法时选择它.但是,我的 PHPStorm似乎忽略了该评论,并没有将该方法的用法标记为已弃用.

现在知道不再允许使用这种方法,但我的一些同事可能不会.我只是检查了别人的电脑,他正在收到弃用警告,所以对每个人来说都不是问题.我不能保证这一点.

我使缓存无效,重新启动PHPStorm,删除并重新添加@deprecated,但似乎没有任何效果.

有没有人有建议?我缺少一个设置吗?

php phpstorm

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

为什么PHP函数/方法中没有"不可用参数"错误?

我只花了10分钟寻找一个bug,当我发现我将一些东西传递给一个方法作为第二个参数,而它不需要超过1个参数.我不得不通过其他方式传递它.

那时我的问题出现了:为什么PHP传递不可用的参数时不会抛出错误?

我错过了什么 - 除了我自己的func_get_args答案?

function test($a)
{

}

test('a', 'b'); // no error, but no 2nd parameter in test(). 
Run Code Online (Sandbox Code Playgroud)

php

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

Document :: getElementById('content')不起作用,但元素就在那里

我正在使用DOMDocument进行DOM操作,但是我遇到了使用getElementById()方法的问题.我正在寻找id为'content'的div,但这会返回NULL:

$element = $document->getElementById('content');

if($element instanceof DOMElement)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

但是,下面的代码确实返回了我正在寻找的元素:

$elements = $document->getElementsByTagName('div'); 
foreach($elements as $element)
    {
        if($element->getAttribute('id') == 'content')
        {
                // do something
                break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我可能会忽略一些简单的东西,但这两段代码看起来与我完全相同.(或者至少应该完全相同.)第二段代码现在可以运行,但保持这种方式确实是错误的.我想知道当第二个方法成功时,为什么第一段代码无法返回正确的元素.

php dom

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

如何在加载后删除部分 URL

基本上我有一个被加载的网址

http://somewebsite.com/Staging/hello/index.php?action=viewByGrid&subdo=show&projectID=-1&stat=1&workStageID=-1
Run Code Online (Sandbox Code Playgroud)

加载后。我希望 URL 显示为

http://somewebsite.com/Staging/hello/index.php?action=viewByGrid
Run Code Online (Sandbox Code Playgroud)

我需要在我的document.ready()加载后不久删除查询字符串

url jquery query-string

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