4

我想在 Anguilla 框架中使用 GetLocalizedItems 方法。

我不知道如何创建新过滤器并设置条件或用于成功和失败的内容。

在图形用户界面中:

tridion.Web.UI.ContentManager.WhereUsed.GetListUsedItems(id, filter.conditions, 
    filter.columns, success, failure);

这个命名空间中的方法是否打算由我们的扩展使用?

4

1 回答 1

5

构建过滤器

这是一个如何构建过滤器的示例

var filter = new Tridion.ContentManager.ListFilter();
filter.conditions.ItemTypes = 16 | 2; // folders and components
filter.conditions.Recursive = true;
filter.conditions.BasedOnSchema = "tcm:1-23-8,tcm:1-32-8".split(",");
filter.columns = Tridion.Constants.ColumnFilter.DEFAULT;

或者来自 General.js 的这个极其简单的案例:

var templateFilter = new Tridion.ContentManager.ListFilter({ 
    conditions: { ItemTypes: [ itemType ] } 
});

调用 WCF 方法

您问题的第二部分确实已经在https://stackoverflow.com/a/9385975/209103中涵盖,尽管我会在这里更具体一点。

诸如此类的 WCF/AJAX 调用是异步执行的,因为它们可能需要一些时间才能完成。虽然您通常会在右括号后的行上简单地处理调用的结果,但您不能在 AJAX 调用中执行此操作,因为该行将在函数完成之前执行。相反,您必须传入一个或多个回调函数,一旦函数完成就会被调用。

当我第一次开始研究这样的方法时,我通常只传入两个函数,它们会进入我的浏览器的 JavaScript 调试器:

Tridion.Web.UI.ContentManager.WhereUsed.GetListUsedItems(
    "tcm:1-23", 
    filter.conditions, 
    filter.columns, 
    new function() { console.log(arguments); debugger; }, 
    new function() { console.log(arguments); debugger; }
);

因此,当对 TCM 服务器的(异步)HTTP 调用成功时调用第一个(匿名)函数,而当调用失败时调用第二个函数。在我上面链接的答案中,我们称它们为onSuccess并使onFailure它们的性质更加明确。

Both functions in this case simply write the implicit arguments parameter that is always passed in JavaScript. They then break into the JavaScript debugger of your browser, so you can inspect the arguments further.

于 2012-06-23T01:14:09.440 回答