【问题标题】:'Controller as' syntax or services?'Controller as' 语法或服务?
【发布时间】:2015-02-24 00:14:02
【问题描述】:

我的 Angular 应用程序中有几个模板,我打算动态插入它们,其中一些可能需要共享数据,甚至可能使用同一个控制器。

我最近看到了很多“ng-controller as”语法的例子来实现这一点,我读过的大部分内容都支持这种方法,但我不知道,我对此感到怀疑它。

我想知道做这样的事情有什么优点和/或缺点(每个 div 是一个插入的 sn-p/模板):

<div ng-controller="mainController as main">  
  mainController: <input type="text" ng-model="main.someValue" />
  main.someValue: {{ main.someValue }}
  <div ng-controller="anotherController as another">
    anotherController: <input type="text" ng-model="another.someValue" />
    main.someValue: {{ main.someValue }}
  </div>
</div> 

当我可以做这样的事情时:

<div ng-controller="mainController">  
  mainController: <input type="text" ng-model="someValue" />
  someValue: {{ someValue }}
</div> 

<div ng-controller="anotherController">
  anotherController: <input type="text" ng-model="anotherValue" />
  someValue: {{ someValue }}
</div>

使用服务来连接我的两个模板中的数据。

谢谢!

【问题讨论】:

    标签: javascript angularjs frontend


    【解决方案1】:

    使用选项一将避免可怕的原型范围继承问题(谷歌“Angular dot notation”),并且它更符合 Angular 团队在未来特性和功能方面的发展方向。

    【讨论】:

    • 但是,如果我必须通过控制器的命名空间来主持我的变量,那么避免使用点表示法不是没有意义吗?例如,如果我要创建一个新的 sn-p,我需要知道每个控制器的命名空间并相应地编写它,与我只使用控制器数据的服务选项相反,服务将是负责管理JS端的连接/绑定。仅仅为了共享数据而不是因为它在 DOM 中有意义而必须嵌入 sn-ps 是不是有点不自然?
    猜你喜欢
    • 2014-07-14
    • 2014-10-13
    • 1970-01-01
    • 2018-03-04
    • 2017-12-25
    • 2017-04-18
    • 1970-01-01
    • 2015-10-23
    • 2016-01-24
    相关资源
    最近更新 更多