angularJS从模板向控制器发送参数

时间:2018-03-05 07:11:40

标签: angularjs

我想做这样的事情

<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...
}]);

但是它不起作用。关于如何将参数从模板传递到控制器定义的任何想法?谢谢。

3 个答案:

答案 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...
}