如何在Angular JS中为单个视图设置模型?

时间:2013-06-06 18:40:00

标签: angularjs angularjs-scope angularjs-routing

我在Angular JS中有一个控制器。

在这个控制器中我有一个$ scope.users属性:它是一组用户。

此控制器由两个视图使用:/ users和/ users /:id。

我已经看到每次进入用户视图时$ scope.users模型都是init。

我的问题很简单,如何将$ scope.users仅应用于/ users视图而不是/ users /:id视图?

我使用$ location.path方法完成了这项工作,但我不知道它是否正确。

PS:我有一个工厂来检索用户,所以我知道这是一个单身人士......

谢谢你的答案。

2 个答案:

答案 0 :(得分:1)

您可以注入$ element对象,并搜索dom以确保您位于正确的页面上。

您可以注入$ location对象并查看该网址是否在右侧页面上。

您可以为/ user的模板添加一些内容,以便它是init的数组,然后user /:id将不包含同一个调用。

在您的代码中,您可以执行以下操作:

angular.module('myapp').constant('users',[]);
angular.module('myapp').controller('UserCtrl', function(users){
    if(!users.length){
        //push some things into the bloody array
    }
});

我并不是说这是所有方式中最好的。这是最难解释的。它类似于创建一个全局变量,但是你没有创建一个全局变量。您正在角度模块上创建一个常量变量。

我相信还有更多方法。这些只是我想到的几种方式。

答案 1 :(得分:0)

我有答案!

事实上,AngularJS不是MVC框架,而是MVVM框架。在这种情况下,控制器是模型(在MVVM模式中),$ scope是ViewModel,HTML是视图(ng-controller是纯.NET MVVM中的dataContext)。

在这种情况下,控制器应该只有一个视图!!

“一般情况下,控制器不应该尝试做太多。它应该只包含单个视图所需的业务逻辑。”

http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller

谢谢你们。希望它有所帮助。