diff --git a/src/plugins/qmljseditor/qmloutlinemodel.cpp b/src/plugins/qmljseditor/qmloutlinemodel.cpp
index ea1eed01fbfdb6d40821e4337aed648446c4af35..441fd99c7e56b95e4ba56f54d022ec0154209d93 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.cpp
+++ b/src/plugins/qmljseditor/qmloutlinemodel.cpp
@@ -211,6 +211,31 @@ private:
         m_model->leaveObjectDefiniton();
     }
 
+    bool visit(AST::UiObjectBinding *objBinding)
+    {
+        QModelIndex index = m_model->enterObjectBinding(objBinding);
+        m_nodeToIndex.insert(objBinding, index);
+        return true;
+    }
+
+    void endVisit(AST::UiObjectBinding * /*objBinding*/)
+    {
+        m_model->leaveObjectBinding();
+    }
+
+    bool visit(AST::UiArrayBinding *arrayBinding)
+    {
+        QModelIndex index = m_model->enterArrayBinding(arrayBinding);
+        m_nodeToIndex.insert(arrayBinding, index);
+
+        return true;
+    }
+
+    void endVisit(AST::UiArrayBinding * /*arrayBinding*/)
+    {
+        m_model->leaveArrayBinding();
+    }
+
     bool visit(AST::UiScriptBinding *scriptBinding)
     {
         QModelIndex index = m_model->enterScriptBinding(scriptBinding);
@@ -373,9 +398,9 @@ QModelIndex QmlOutlineModel::enterObjectDefinition(AST::UiObjectDefinition *objD
 
     if (typeName.at(0).isUpper()) {
         prototype.setText(typeName);
-        prototype.setAnnotation(getAnnotation(objDef));
+        prototype.setAnnotation(getAnnotation(objDef->initializer));
         if (!m_typeToIcon.contains(typeName)) {
-            m_typeToIcon.insert(typeName, getIcon(objDef));
+            m_typeToIcon.insert(typeName, getIcon(objDef->qualifiedTypeNameId));
         }
         prototype.setIcon(m_typeToIcon.value(typeName));
         prototype.setData(ElementType, ItemTypeRole);
@@ -397,6 +422,65 @@ void QmlOutlineModel::leaveObjectDefiniton()
     leaveNode();
 }
 
+QModelIndex QmlOutlineModel::enterObjectBinding(AST::UiObjectBinding *objBinding)
+{
+    QmlOutlineItem bindingPrototype(this);
+
+    bindingPrototype.setText(asString(objBinding->qualifiedId));
+    bindingPrototype.setIcon(m_icons->scriptBindingIcon());
+    bindingPrototype.setData(PropertyType, ItemTypeRole);
+    bindingPrototype.setNode(objBinding);
+    bindingPrototype.setSourceLocation(getLocation(objBinding));
+    bindingPrototype.setIdNode(objBinding->qualifiedId);
+
+    enterNode(bindingPrototype);
+
+    QmlOutlineItem objectPrototype(this);
+
+    const QString typeName = asString(objBinding->qualifiedTypeNameId);
+    objectPrototype.setText(typeName);
+    objectPrototype.setAnnotation(getAnnotation(objBinding->initializer));
+    if (!m_typeToIcon.contains(typeName)) {
+        m_typeToIcon.insert(typeName, getIcon(objBinding->qualifiedTypeNameId));
+    }
+    objectPrototype.setIcon(m_typeToIcon.value(typeName));
+    objectPrototype.setData(ElementType, ItemTypeRole);
+    objectPrototype.setIdNode(objBinding->qualifiedTypeNameId);
+    objectPrototype.setNode(objBinding);
+    objectPrototype.setSourceLocation(getLocation(objBinding));
+
+    enterNode(objectPrototype);
+
+    return bindingPrototype.index();
+}
+
+void QmlOutlineModel::leaveObjectBinding()
+{
+    leaveNode();
+    leaveNode();
+}
+
+QModelIndex QmlOutlineModel::enterArrayBinding(AST::UiArrayBinding *arrayBinding)
+{
+    QmlOutlineItem bindingPrototype(this);
+
+    bindingPrototype.setText(asString(arrayBinding->qualifiedId));
+    bindingPrototype.setIcon(m_icons->scriptBindingIcon());
+    bindingPrototype.setData(PropertyType, ItemTypeRole);
+    bindingPrototype.setNode(arrayBinding);
+    bindingPrototype.setSourceLocation(getLocation(arrayBinding));
+    bindingPrototype.setIdNode(arrayBinding->qualifiedId);
+
+    enterNode(bindingPrototype);
+
+    return bindingPrototype.index();
+}
+
+void QmlOutlineModel::leaveArrayBinding()
+{
+    leaveNode();
+}
+
 QModelIndex QmlOutlineModel::enterScriptBinding(AST::UiScriptBinding *scriptBinding)
 {
     QmlOutlineItem prototype(this);
@@ -666,8 +750,8 @@ AST::SourceLocation QmlOutlineModel::getLocation(AST::UiObjectMember *objMember)
     return location;
 }
 
-QIcon QmlOutlineModel::getIcon(AST::UiObjectDefinition *objDef) {
-    const QmlJS::Interpreter::Value *value = m_context->evaluate(objDef->qualifiedTypeNameId);
+QIcon QmlOutlineModel::getIcon(AST::UiQualifiedId *qualifiedId) {
+    const QmlJS::Interpreter::Value *value = m_context->evaluate(qualifiedId);
 
     if (const Interpreter::ObjectValue *objectValue = value->asObjectValue()) {
         do {
@@ -689,8 +773,8 @@ QIcon QmlOutlineModel::getIcon(AST::UiObjectDefinition *objDef) {
     return QIcon();
 }
 
-QString QmlOutlineModel::getAnnotation(AST::UiObjectDefinition *objDef) {
-    const QHash<QString,QString> bindings = getScriptBindings(objDef);
+QString QmlOutlineModel::getAnnotation(AST::UiObjectInitializer *objectInitializer) {
+    const QHash<QString,QString> bindings = getScriptBindings(objectInitializer);
 
     if (bindings.contains("id"))
         return bindings.value("id");
@@ -701,12 +785,13 @@ QString QmlOutlineModel::getAnnotation(AST::UiObjectDefinition *objDef) {
     if (bindings.contains("target"))
         return bindings.value("target");
 
+
     return QString();
 }
 
-QHash<QString,QString> QmlOutlineModel::getScriptBindings(AST::UiObjectDefinition *objDef) {
+QHash<QString,QString> QmlOutlineModel::getScriptBindings(AST::UiObjectInitializer *objectInitializer) {
     QHash <QString,QString> scriptBindings;
-    for (AST::UiObjectMemberList *it = objDef->initializer->members; it; it = it->next) {
+    for (AST::UiObjectMemberList *it = objectInitializer->members; it; it = it->next) {
         if (AST::UiScriptBinding *binding = AST::cast<AST::UiScriptBinding*>(it->member)) {
             const QString bindingName = asString(binding->qualifiedId);
             AST::ExpressionStatement *expr = AST::cast<AST::ExpressionStatement*>(binding->statement);
diff --git a/src/plugins/qmljseditor/qmloutlinemodel.h b/src/plugins/qmljseditor/qmloutlinemodel.h
index 647a382b30853b0fe5134810ecc793aeb07fbebe..f65bf4c3ca99c00a6472867664a3aac72e64f444 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.h
+++ b/src/plugins/qmljseditor/qmloutlinemodel.h
@@ -88,6 +88,12 @@ private:
     QModelIndex enterObjectDefinition(QmlJS::AST::UiObjectDefinition *objectDefinition);
     void leaveObjectDefiniton();
 
+    QModelIndex enterObjectBinding(QmlJS::AST::UiObjectBinding *objectBinding);
+    void leaveObjectBinding();
+
+    QModelIndex enterArrayBinding(QmlJS::AST::UiArrayBinding *arrayBinding);
+    void leaveArrayBinding();
+
     QModelIndex enterScriptBinding(QmlJS::AST::UiScriptBinding *scriptBinding);
     void leaveScriptBinding();
 
@@ -107,10 +113,10 @@ private:
 
     static QString asString(QmlJS::AST::UiQualifiedId *id);
     static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::UiObjectMember *objMember);
-    QIcon getIcon(QmlJS::AST::UiObjectDefinition *objDef);
+    QIcon getIcon(QmlJS::AST::UiQualifiedId *objDef);
 
-    static QString getAnnotation(QmlJS::AST::UiObjectDefinition *objDef);
-    static QHash<QString,QString> getScriptBindings(QmlJS::AST::UiObjectDefinition *objDefinition);
+    static QString getAnnotation(QmlJS::AST::UiObjectInitializer *objInitializer);
+    static QHash<QString,QString> getScriptBindings(QmlJS::AST::UiObjectInitializer *objInitializer);
 
 
     SemanticInfo m_semanticInfo;