我正在尝试在AngularJS中创建一个多输入标签输入字段,我还想在其中添加自动完成,这样在输入字段中输入至少3个字母时,数据库中已存在的标记名称将显示为建议在下拉列表中。
问题在于: 我正在使用FOSjsRouting Bundle的Routing.generate()模块来调用javascript代码中的控制器操作(该操作反过来返回以下JsonResponse对象):
这是控制器代码:
/**
* @Route("/jsondata", options={"expose"=true}, name="my_route_to_json_data")
*/
public function tagsAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT t.text
FROM AppBundle:Tag t
WHERE t.id > :id
ORDER BY t.id ASC'
)->setParameter('id', '0');
$tagsdata = $query->getScalarResult();
$response = new Response(json_encode($tagsdata));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
这是AngularJS代码:
var app = angular.module('plunker', ['ngTagsInput']);
app.controller('MainCtrl', function($scope, $http) {
$scope.loadTags = function(query) {
return $http.get(Routing.generate('my_route_to_json_data'));
};
});
现在我在tags.json
中保存Json响应并在不使用Routing.generate()模块的情况下调用它:
var app = angular.module('plunker', ['ngTagsInput']);
app.controller('MainCtrl', function($scope, $http) {
$scope.loadTags = function(query) {
return $http.get('http://localhost/AngularTags/web/js/tags.json');
}
});
现在我知道问题在于正确使用Routing.generate()。由于我是AngularJS的新手,并且我刚刚学习如何在控制台中调试(顺便说一下,我很喜欢),我不能完全确定我是否可以自己解决问题。任何帮助表示赞赏。
抱歉,这篇文章太长了,只是想说清楚。 所以,等待回应......答案 0 :(得分:1)
这不是AngularJS的问题,这是JavaScript中可变范围的问题。
您是否导入了HTML as specified in the documentation中的脚本?