如何在角项目中使用ng-init将值传递给函数? 我试过这个并且工作正常:
<div ng-controller="myCtrl" ng-init="myfunction(1)">
但问题是,当我这样做时
<div ng-controller="myCtrl" ng-init="myfunction({{id}})">
或
<div ng-controller="myCtrl" ng-init="myfunction(id)">
它不起作用!! 如果我在模板中显示{{id}}的值,我会得到id:1 所以id确实存在。
这是什么问题?
答案 0 :(得分:1)
正如Brendan Green所提到的,如果id
是范围变量,则不需要将其传递给函数。这样的事情会起作用吗?
$scope.myfunction = function(){
// do whatever with $scope.id
}
如果你确实需要使用它,那么你的第三个例子应该可行。这是plunker。
答案 1 :(得分:0)
在这里创建了一个小提琴:http://jsfiddle.net/frishi/HB7LU/22553/
基本上,将变量本身传递给函数而不是插值,即{{boo}}
<div ng-controller="MyCtrl" ng-init="boo=2">
<div ng-click="foo(boo)">Click Me</div>
</div>
答案 2 :(得分:0)
为了在sbt console
中使用myfunction
,函数应该在ng-init
中定义,因为ng-init会根据它们的不同来计算表达式。
所以这是你应该做的:
<强> HTML:强>
$scope
<强> JS:强>
<body ng-controller="MainCtrl" ng-init='myfunction("john");'>
<p>Hello {{name}}!</p>
</body>
<强> Example 强>
请注意,建议不要以这种方式使用app.controller('MainCtrl', function($scope) {
$scope.name = 'Mike';
$scope.myfunction = function(otherName){
$scope.name = otherName;
};
});
:
ngInit的唯一合适用途是对特殊属性进行别名处理 ngRepeat的内容,如下面的演示所示。除了这种情况,你应该 使用控制器而不是ngInit来初始化作用域上的值。