视图和控制器之间的AngularJS耦合

时间:2015-08-17 11:18:27

标签: javascript angularjs

我有一个AngularJS应用程序,我开始使用protected void Page_Load(object sender, EventArgs e){ if (!IsPostBack) { txtTrailerType.Text=""; } }指令定义控制器的视图文件。

myview.html

ng-controller

但是,我现在正在使用路由,我的控制器被定义为我的routeProvider配置的一部分。

myview.html

<div ng-controller="MyController">
   <ul>
     <li class="thumb" ng-repeat="item in items">
         <span profile ng-click="getItem(item.id)"></span>
     </li>      
   </ul> 
</div>

router.js

<div>
   <ul>
     <li class="thumb" ng-repeat="item in items">
         <span profile ng-click="getItem(item.id)"></span>
     </li>      
   </ul> 
</div>

这样可行,但是起初看起来这似乎帮助我将我的视图与控制器分离,因为我仍然在视图中引用了范围成员变量,这些内容与我的控制器相关联。

我在这里遗漏了什么吗?我在routeProvider中指定.when('/homepage', { templateUrl: 'templates/myview.html', controller: 'MyController' }) 而不是在我的模板中获得了什么?

2 个答案:

答案 0 :(得分:2)

出于所有实际目的,除了符合AngularJS中定义路径,视图和控制器的标准方法之外,我不相信你获得了任何东西。

如果我们正在考虑编程原理和MVC,你的视图现在对控制器一无所知,它只依赖于模型(角度为$scope),这很好,在MVC架构中完全正常。

答案 1 :(得分:1)

通过在路径中定义控制器,您可以在多个控制器中使用相同的视图(模板)(并传递不同的范围数据)

例如:

.when('/homepage', {
   templateUrl: 'templates/myview.html',
   controller: 'MyController'
})
.when('/list', {
   templateUrl: 'templates/myview.html',
   controller: 'MyListController'
})