var app = angular.module('app' , ['ui.router']);
app.controller('HeaderController',function( $scope , $http ){
$http.get("/data/main_menu.php")
.success(function(data){
$scope.Menus = data;
});
});
HTML <header ng-controller="HeaderController as header">
<ul id="menu_categories">
<li ng-repeat="menu in header.Menus">{{ menu.name }}</li>
</ul>
/数据/main_menu.php
<?php
$menu = array(
array('name' => 'FACE'),
array('name' => 'BODY'),
array('name' => 'HAIR'),
array('name' => 'MEN'),
array('name' => 'BABIES & KIDS'),
array('name' => 'SUN'),
array('name' => 'AROMATHERAPY')
);
echo json_encode($menu);
?>
我尝试在控制器中更新函数或定义$范围。$http.get
之外的菜单你能帮我……吗?可能是一些小的东西!如果您使用控制器作为语法,您不应该再将Menus
对象分配给$scope
。相反,您可以设置相应的this
属性(控制器对象的属性,而不是$scope
对象的属性):
app.controller('HeaderController', function($scope, $http) {
var self = this;
$http.get("/data/main_menu.php").success(function(data){
self.Menus = data;
});
});
我使用self
引用,因为在成功回调中this
指向不同的上下文,而不是控制器。
在这里阅读不同的控制器声明样式。
如果你想用$scope.Menus = data;
的方式,ngRepeat
应该看起来像<li ng-repeat="menu in Menus">{{ menu.name }}</li>
。使用controller-as声明,当然您仍然可以使用$scope
对象
header。菜单不正确,您必须使用菜单代替。这样的
<header ng-controller="HeaderController">
<ul id="menu_categories">
<li ng-repeat="menu in Menus">{{ menu.name }}</li>
</ul>