diff --git a/src/plugins/qmljseditor/qmloutlinemodel.cpp b/src/plugins/qmljseditor/qmloutlinemodel.cpp
index 5c31904d09196aed0d830fe5e719375e1b84e638..20b0515c5743c4d0897d284d05e87fc5f4aeeae8 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.cpp
+++ b/src/plugins/qmljseditor/qmloutlinemodel.cpp
@@ -487,6 +487,7 @@ QModelIndex QmlOutlineModel::enterScriptBinding(AST::UiScriptBinding *scriptBind
 
     prototype.setText(asString(scriptBinding->qualifiedId));
     prototype.setIcon(m_icons->scriptBindingIcon());
+    prototype.setAnnotation(getAnnotation(scriptBinding->statement));
     prototype.setData(NonElementBindingType, ItemTypeRole);
     prototype.setSourceLocation(getLocation(scriptBinding));
     prototype.setNode(scriptBinding);
@@ -507,6 +508,7 @@ QModelIndex QmlOutlineModel::enterPublicMember(AST::UiPublicMember *publicMember
     if (publicMember->name)
         prototype.setText(publicMember->name->asString());
     prototype.setIcon(m_icons->publicMemberIcon());
+    prototype.setAnnotation(getAnnotation(publicMember->expression));
     prototype.setData(NonElementBindingType, ItemTypeRole);
     prototype.setSourceLocation(getLocation(publicMember));
     prototype.setNode(publicMember);
@@ -789,26 +791,28 @@ QString QmlOutlineModel::getAnnotation(AST::UiObjectInitializer *objectInitializ
     return QString();
 }
 
+QString QmlOutlineModel::getAnnotation(QmlJS::AST::Statement *statement)
+{
+    if (AST::ExpressionStatement *expr = AST::cast<AST::ExpressionStatement*>(statement))
+        return getAnnotation(expr->expression);
+    return QString();
+}
+
+QString QmlOutlineModel::getAnnotation(QmlJS::AST::ExpressionNode *expression)
+{
+    if (!expression)
+        return QString();
+    QString source = m_semanticInfo.document->source();
+    return source.mid(expression->firstSourceLocation().begin(),
+                      expression->lastSourceLocation().end() - expression->firstSourceLocation().begin());
+}
+
 QHash<QString,QString> QmlOutlineModel::getScriptBindings(AST::UiObjectInitializer *objectInitializer) {
     QHash <QString,QString> scriptBindings;
     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);
-            if (!expr)
-                continue;
-
-            AST::StringLiteral *stringLiteral = AST::cast<AST::StringLiteral*>(expr->expression);
-            if (stringLiteral)  {
-                scriptBindings.insert(bindingName, stringLiteral->value->asString());
-                continue;
-            }
-
-            AST::IdentifierExpression *idExpr = AST::cast<AST::IdentifierExpression*>(expr->expression);
-            if (idExpr) {
-                scriptBindings.insert(bindingName, idExpr->name->asString());
-                continue;
-            }
+            scriptBindings.insert(bindingName, getAnnotation(binding->statement));
         }
     }
     return scriptBindings;
diff --git a/src/plugins/qmljseditor/qmloutlinemodel.h b/src/plugins/qmljseditor/qmloutlinemodel.h
index 42b07270da42a37e138e2180a32527a01a0abda3..8459877334190255132340311d4a0466f9697645 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.h
+++ b/src/plugins/qmljseditor/qmloutlinemodel.h
@@ -116,8 +116,10 @@ private:
     static QmlJS::AST::SourceLocation getLocation(QmlJS::AST::UiObjectMember *objMember);
     QIcon getIcon(QmlJS::AST::UiQualifiedId *objDef);
 
-    static QString getAnnotation(QmlJS::AST::UiObjectInitializer *objInitializer);
-    static QHash<QString,QString> getScriptBindings(QmlJS::AST::UiObjectInitializer *objInitializer);
+    QString getAnnotation(QmlJS::AST::UiObjectInitializer *objInitializer);
+    QString getAnnotation(QmlJS::AST::Statement *statement);
+    QString getAnnotation(QmlJS::AST::ExpressionNode *expression);
+    QHash<QString,QString> getScriptBindings(QmlJS::AST::UiObjectInitializer *objInitializer);
 
 
     SemanticInfo m_semanticInfo;