无法加载部分角度

时间:2016-08-11 13:44:10

标签: angularjs symfony

我正在研究Symfony3和Angular 1.5.8集成,api部分已准备就绪,现在我试图使用角度js显示部分结果,但我没有取得任何成功。

这是我的工厂,负责从symfony

获取数据

jobs.fac.js

(function () {
   "use strict";

    angular
        .module("ngListings")
        .factory("jobFactory", function ($http) {
            console.log('inside the factory');
            function getJobs() {
                return $http.get(Routing.generate("get_jobs"));
            }

            return {
                getJobs: getJobs
            }
        })

})();

这是我的控制器jobs.ctrl.js

(function () {
   "use strict";

    angular
        .module("ngListings")
        .controller("jobsCtrl", function ($scope, $state, $http, jobFactory) {
            var vm = this;
            $scope.$on
            vm.jobs;
            jobFactory.getJobs().then(function (jobs) {
                vm.jobs = jobs.data;
            });
        });

})();

这是我的main.js我在哪里设置状态和与状态链接的控制器

angular
    .module("ngListings", ["ui.router"])
    .config(function ( $stateProvider) {

        $stateProvider
            .state('jobs',{
                url: '/listings/jobs',
                templateURL: '/partials/home.html',
                controller: 'jobsCtrl as vm'
            })
        ;
    });

现在这是我添加ui-view

的索引
{% extends 'base.html.twig' %}
{% block body %}
    <ui-view></ui-view>
{% endblock %}

现在正如我所提到的,我正在使用Symfony,所以我尝试在web目录中添加部分内容,并且在AppBundle/Resources/views/jobs/template-name内部,在两种情况下都不会出现部分,并且控制台中也没有错误。

在控制台中,我可以看到正在调用的URL和正在返回的数据,但它没有显示在浏览器中。

如果有人能告诉我在这里缺少什么,我将非常感激?

注意:Symfony和Angular没有设置分开,角度js文件保存在AppBundle中然后被转储到web目录中,这只适用于symfony用户,任何非symfony用户都可以看到我做错了也欢迎发表评论

1 个答案:

答案 0 :(得分:1)

要通过Symfony提供模板,您需要路由/控制器通过url访问它(在您的示例中为“partials / home.html”)。优雅的解决方案是让一个控制器将partial作为变量的名称,并将该twig文件呈现为响应。请查看此幻灯片http://www.slideshare.net/mladenplavsic/symfony-angularjs-dafed26/19,作为模板控制器的示例。

有了这个,您可以将templateUrl更改为“/template/home.html”,其中“home”是Symfony控制器的“$ name”值。