如何使用Tridion Anguilla框架获取LocLocalizedItems?

时间:2012-06-22 13:37:11

标签: tridion

我想在Anguilla Framework中使用GetLocalizedItems方法。

我不知道如何创建新过滤器并设置条件或使用什么来成功和失败。

在GUI中:

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

此命名空间中的方法是否应由我们的扩展使用?

1 个答案:

答案 0 :(得分: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调用成功时调用第一个(匿名)函数,而在调用失败时调用第二个(匿名)函数。在我上面提到的答案中,我们称他们为onSuccessonFailure,以使其性质更加明确。

在这种情况下,这两个函数只是编写始终在JavaScript中传递的隐式arguments参数。然后他们进入浏览器的JavaScript调试器,这样你就可以进一步检查参数。