angular调用一个函数并传递id

时间:2016-01-22 00:44:20

标签: angularjs function ng-init

如何在角项目中使用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确实存在。

这是什么问题?

3 个答案:

答案 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来初始化作用域上的值。