我想做这样的事情
<div ng-controller="test" init="category = 1">
...
</div>
并在我的控制器中
var myApp = angular.module('myApp',[]);
myApp.controller('test', ['$scope, $http', function($scope, $http) {
$http.get('/categories' + $scope.category...
}]);
但是它不起作用。关于如何将参数从模板传递到控制器定义的任何想法?谢谢。
答案 0 :(得分:2)
试试这个,希望它能解决你的问题。
HTML CODE
<div ng-controller="test" init="init(1)">
控制器代码
var myApp = angular.module('myApp', []);
myApp.controller('test', ['$scope, $http', function ($scope, $http) {
$scope.init = function (category) {
$http.get('/categories' + category);
}
}]);
答案 1 :(得分:1)
该指令名为ngInit
,因此要正确使用它,您可以这样做:
<div ng-controller="test" ng-init="category = 1">
...
</div>
使用ngInit
初始化可以被视为反模式according to the documentation,但某些特定用例除外。您提到将数据从PHP传递到Angular,这是一个可接受的用例,但我可能会考虑采用不同的解决方案来避免ngInit
:
<script>
angular.module('myApp').constant('MY_DATA', {
category: 1
});
</script>
在加载角度应用程序后,您只需将其添加到PHP页面。然后你可以将MY_DATA
注入你的控制器:
angular.module('myApp').controller('test', ['MY_DATA', function (MY_DATA) {
$http.get('/categories' + MY_DATA.category);
}]);
答案 2 :(得分:0)
我建议如下:
<div ng-controller="test" init="init(1)"></div>
控制器:
$scope.category = 0;
$scope.init = function(myCategory){
$scope.category = myCategory;
$scope.callGetFunction(); //$http.get('/categories' + $scope.category...
}