2016-08-11 46 views
0

我正在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

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

有了这个,你可以将你的templateUrl改成类似“/template/home.html”的东西,其中“home”是Symfony控制器的“$ name”值。