scope()函数在AngularJS控制器中返回undefined

时间:2013-12-13 17:00:30

标签: javascript angularjs undefined return-value

我在控制器中有一个功能:

$scope.passValues = function (param1){
    return "foo";
};
console.log($scope.passValues());

这将记录foo,但是:

$scope.passValues = function (param1){
    return param1;
};
console.log($scope.passValues());

此 我不明白为什么,因为:

$scope.passValues = function (param1){
        console.log(param1);
        return param1;
     };

将记录robert,当用作passValues(item.firstName)时,它会变为coorect。 我的问题是第二个例子,我需要函数正确返回param1值,以便以后可以在控制器中使用。

3 个答案:

答案 0 :(得分:3)

确保将值传递给函数,否则参数将为undefined

来自控制器

$scope.passValues('Robert')

从你的观点来看

<div>
{{ passValues('Robert') }}
</div>

答案 1 :(得分:0)

不确定为什么降级这是一个合法的问题,这就是答案,我想我被误解或给出了不好的解释。

我不得不使用服务,在另一个控制器中使用param1:

第一个控制器:

  $scope.passValues = function (param1){
      myservice.firstName = param1;
 };

服务:

.service('myservice', function() {
})

第二个控制器:

  .controller('detail',
    function ($scope, myservice) {
        $scope.content = myservice.firstName;

    });

然后在模板上,{{content}}正确显示param1(firstName)的值。

答案 2 :(得分:0)

当我试图寻找scope()返回未定义的可能原因时,我遇到了这个问题......

在我的情况下,我有一个myApp模块MyController $scope.reloadItems函数:

<div ng-app='myApp' ng-controller='MyController' id="myAngularApp">

我为此加载的js文件:

  • angular.min.jsng-infinite-scroll.min.js
  • my my_angular_app.js定义了我的模块
  • some_view.js我在做的事情:

    $('#myAngularApp').scope().reloadItems();
    

现在scope()经常在模块无法实例化或存在错误时返回undefined。在这种情况下,这是因为顺序,我加载.js文件,因为: 在$('#myAngularApp').scope()有机会构建此模块之前执行了my_angular_app.js ...

...所以,如果其他人像我一样来到这里,我希望这会有所帮助:)