Angular将变量作为未定义函数传递给函数

时间:2015-03-04 13:57:05

标签: javascript angularjs meanjs

我正在MEANJS上构建一个应用程序。以下是我的观点:

<section data-ng-controller="PostsController" data-ng-init="findOne()">
...
    <span data-ng-controller="FavsController" ng-init="isFaved(post._id)">
        <button type="button" ng-hide="faved[post._id]"></button>
    </span>
...
</section>

这是我的函数FavsController

$scope.isFaved = function(postId) {
    console.log(postId);
    // other stuff. create an array named faved etc.
};

问题是,post._idundefined传递给函数。但是当我在我的视图中说{{ post._id }}时,它会打印当前的帖子ID,无论html在哪里。当我通过键入提供帖子ID(我的意思是isFaved(123))时,它正在工作,内部按钮的ng-hide也正常工作。我正在使用相同的html和相同的js以及其他一些视图,但只有这一个会引发错误。任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

ng-init非常适合预先设定值,旨在用于ng-repeat内的别名属性。
你真正想要的是将函数调用绑定到适当的事件,如...

ng-click="isFaved(post._id)"

或者初始化控制器中的值或变量,以便确保它们与值一起存在。在这种情况下使用ng-init并不是真正意图如此,所以你可以期待意外。