【发布时间】:2015-03-04 22:50:54
【问题描述】:
我正在 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._id 作为undefined 传递给函数。但是当我在我的视图中输入 {{ post._id }} 时,它会打印当前的帖子 ID,无论在 html 中的哪个位置。当我通过键入(我的意思是 isFaved(123))提供帖子 ID 时,它正在工作,并且内部按钮的 ng-hide 也正常工作。我正在使用相同的html 和相同的js 以及其他一些视图,但只有这个会引发错误。任何想法为什么会发生这种情况?
【问题讨论】:
-
post._id 存在于 FavsController 初始化中?你能提供初始化后的代码吗?如果您可以为该问题提供 Splnkr 或 Jsfiddle,它可能更容易解决。
-
@OrGuz 不,它在 FavsController 启动时不存在,这从来都不是问题。我不确定如何在 JsFiddle 上设置所有这些。
-
您可能在 angular 处理完值之前尝试使用 post._id。
-
@marcieng 您说它在 FavsController 初始化时不存在,但您希望 ng-init 使用不存在的项目调用 isFaved?我想这就是它未定义的原因。您在哪里创建帖子?
-
@codebob 可能是对的。 ngInit 只执行一次,并且 ngHide 在每个摘要处更新。所以执行 ngInit 时可能没有设置该值。
标签: javascript angularjs meanjs