AngularJS + Rails $ scope模型已更新,但未触发重新渲染
问题描述:
不知道我是否正确使用Angular。我基本上想做一个简单的链接/故事分享网站。
var Story = $resource("api/stories/:id", {}, {
query: { method: "GET", isArray: false }
});
Story.query().$promise.then(function (data) {
$scope.stories = data.stories;
$scope.test = 1;
});
$scope.submitForm = function(formData) {
Story.save({}, formData, function(data) {
$scope.$apply(function() {
$scope.stories = data.stories;
$scope.test = 2;
});
});
}
更改$scope.test
得到体现,而不是故事。
编辑:唔所以很明显,如果我删除“NG控制器”
<ul ng-controller="storyController">
<li ng-repeat="story in stories">{{ story.title }}</li>
<p>{{ test }}</p>
</ul>
一切正常,现在.....我什至不知道为什么....
答
在query()
方法,您将$scope.stories
设置为数组,但是,看起来您尝试将$scope.stories
设置为我假设的单个故事对象。当$scope.stories
更改时,您希望看到什么?故事列表中的新故事?如果是这样,您需要执行以下操作:
$scope.stories.push(data.stories);
您不替换数组,您正在为其添加新索引。
+0
我的创建api方法返回一个新的故事列表,我的意图是将当前范围故事设置为新的名单。我在保存之后假设它收到一组故事+我刚刚创建的故事。然后,如果我将scope.stories设置为新列表,它将会更新 – 2014-11-14 15:05:20
答
好的很明显,答案是我已经定义了ng-view +一个将storyController分配给该视图的路径。我基本上通过添加一个ng-controller指令来分配它两次。
你如何使用'故事'? – apneadiving 2014-11-14 14:29:04
在浏览器中启动调试并查看“数据”对象 – 2014-11-14 14:41:25
我只是使用ng-repeat来遍历所有故事 – 2014-11-14 14:54:29