2014-07-17 135 views
0

將我的服務注入到控制器時出現編譯錯誤。這個應用程序的預期輸出應該只是網頁上的文本「你好」。將服務注入控制器

<!doctype html> 
<html> 
<head> 
</head> 
<body ng-app="ddApp"> 
    <div ng-controller="ddController"> 
    <div svc-show-meetings template="{{template}}"> 
    </div> 
    </div> 
</body> 
<script> 
    var ddApp = angular.module('ddApp', []) 

    ddApp.factory('svcMeetingsTemplate', function() 
    { 
    return function() 
    { 
     return "<div>Hello</div>"; 
    }; 
    }); 

    ddApp.directive('svcShowMeetings', function ($compile) 
    { 
    return { 
     scope: true, 
     link: function (scope, element, attrs) 
     { 
     } 
    }; 
    }); 

    ddApp.controller('ddController', ['$scope', 'svcMeetingsTemplate', function ($scope, svcMeetingsTemplate) 
    { 
    $scope.template = svcMeetingsTemplate(); 
    }]); 
</script> 
</html> 

小提琴: http://jsfiddle.net/Xp5BF/1/

我明明做錯事。我建立這使用一些代碼發佈在這裏SO: https://stackoverflow.com/a/14846975/753632

+0

返回功能(),你可以給一個名稱,這個功能並調用這樣svcMeetingsTemplate.name()? ? – ThomasP1988

+0

我不明白。你是否在小提琴中嘗試過它? – AndroidDev

+0

對我來說,這看起來像jsfiddle是jsfiddle。如果您在左側的下拉菜單中更改爲「不換行 - 包含在」中,則錯誤消失。沒有任何東西被渲染,但這可能是因爲代碼沒有真正做任何事情。 – ivarni

回答

2

該錯誤似乎來自jsfiddle不是真棒,當涉及到使用外部依賴關係。該位通過要求在<head>而不是onLoad中包含角度來解決。

實際呈現模板,$watch它的指令這樣

scope.$watch('template', function() { 
    element.append(scope.template); 
}); 

http://jsfiddle.net/Xp5BF/12/

+0

你說得對。非常棒的「真棒」。 – AndroidDev

+0

@AndroidDev我更喜歡http://plnkr.co/,因爲它在我看來處理得更好。 – ivarni