AngularJS - 控制器和工厂 - 我哪里错了?

时间:2013-05-19 03:45:39

标签: angularjs controller factory angularjs-ng-repeat

我是Angular的新手,无法确定我哪里出错了。我只是想把我的工厂注入我的控制器,在我的html中引用控制器并使用ng-repeat来显示数据。我甚至不能单独使用把手并排除ng-repeat。我在这里看看我的代码中是否存在一些我错过的错误。我已经经历了两个单独的教程,以获得一个挂起,并确信我有它。我猜不是。

HTML:

<html data-ng-app='theApp'>

<div class='sideRow' data-ng-controller='mainTagController'>

<div class='sideRowLabel'>TAGS</div>

<div class='sideRowData'>

<a href='page.html' class='blueLink' data-ng-repeat='mainTag in mainTags'>{{ mainTag }}</a>

</div>

</div>

JS:

/// <reference path="../../vendor/angular.min.js" />

var theApp = angular.module('theApp', []);

theApp.factory('mainTagFactory', function() { 

    var mainTags = [ 

        { mainTag: 'Tag 1'},
        { mainTag: 'Tag 2'},
        { mainTag: 'Tag 3'},

    ];

    var factory = {};

    factory.getMainTags = function() { 

        return mainTags 

    }

    return factory 

});

theApp.controller('mainTagController', function ($scope, mainTagFactory) {

    init(); 

    function init() {

        $scope.mainTags = mainTagFactory.getMainTags(); 

    }

});

2 个答案:

答案 0 :(得分:2)

似乎你只是在工厂函数中缺少一些分号。

在这里你可以找到一个有效的jsfiddle:

http://jsfiddle.net/ME49s/

factory.getMainTags = function() { 

    return mainTags 

}

return factory 

我也可以用{{mainTag.mainTag}}替换{{mainTag}},因为我认为这是你想要实现的目标。

希望它适合你

彼得

答案 1 :(得分:-1)

var theApp = angular.module('theApp', []);

theApp.factory('mainTagFactory', function() { 

    var mainTags = [ 

        { mainTag: 'Tag 1'},
        { mainTag: 'Tag 2'},
        { mainTag: 'Tag 3'},

    ];

    var factory = {};

    factory.getMainTags = function() { 

        return mainTags 

    }

    return factory 

});

theApp.controller('mainTagController', ['$scope', 'mainTagFactory',  function ($scope, mainTagFactory) {

    init(); 

    function init() {

        $scope.mainTags = mainTagFactory.getMainTags(); 

    }

}]);