我在一个名为"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)
问题:我使用函数'unremove'将元素的'destroy'属性(Page或FormElement)设置为false.如您所见,然后我在页面上调用'valueHasUpdated'.但是如何在observableArray上调用formElements …
我使用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'中,导致错误.我怎样才能防止这种情况发生?
我在Git中遇到一个奇怪的问题。我使用Composer在应用程序中包含TCPDF,但无法将其添加到我的存储库中。
这是我的逐步操作:
现状。这些只是插件;它缺少我需要的“ tcpdf”文件夹。
现在,我运行Composer使其安装附加目录。
在这张照片中,已经很清楚有些问题。Composer下载了所有文件和文件夹,并且TCPDF在我的计算机上正常运行,但是只有tcpdf文件夹显示为红色。子文件夹不是!我转到命令行并执行“ git add。”,以便它添加所有文件和文件夹。现在看起来像这样:
还是错。
错误状态反映为git status:
我真的被困在这里。我不知道如何告诉Git这不是文件而是文件夹。我的仓库很完美,但是如果我的同事更新,他只会得到此文件,而不会包含文件夹内容。
我该如何解决?
我通过将@deprecated添加到docBlock来弃用我的项目中的方法,期望PHPStorm在解决该特定方法时选择它.但是,我的 PHPStorm似乎忽略了该评论,并没有将该方法的用法标记为已弃用.
现在我知道不再允许使用这种方法,但我的一些同事可能不会.我只是检查了别人的电脑,他正在收到弃用警告,所以对每个人来说都不是问题.我不能保证这一点.
我使缓存无效,重新启动PHPStorm,删除并重新添加@deprecated,但似乎没有任何效果.
有没有人有建议?我缺少一个设置吗?
我只花了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) 我正在使用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)
我可能会忽略一些简单的东西,但这两段代码看起来与我完全相同.(或者至少应该完全相同.)第二段代码现在可以运行,但保持这种方式确实是错误的.我想知道当第二个方法成功时,为什么第一段代码无法返回正确的元素.
基本上我有一个被加载的网址
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()加载后不久删除查询字符串
php ×3
knockout.js ×2
composer-php ×1
dom ×1
git ×1
javascript ×1
jquery ×1
phpstorm ×1
query-string ×1
tcpdf ×1
url ×1