我正在研究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用户都可以看到我做错了也欢迎发表评论
答案 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”值。