任何带有ng-tags的Angular JS解决方案

时间:2015-01-05 11:23:58

标签: javascript php angularjs laravel blade

我喜欢在我的Multiple Pages Laravel应用程序中使用AngularJs。

由于我使用Laravel Blade模板引擎,我似乎不喜欢将Angular标签包含在我的刀片模板集群中的想法

实施例

<div ng-controller="TodoController">
      <span>@{{remaining()}} of @{{todos.length}} remaining</span>
      [ <a href="" ng-click="archive()">archive</a> ]
      <ul class="unstyled">
        <li ng-repeat="todo in todos">
          <input type="checkbox" ng-model="todo.done">
          <span class="done-@{{todo.done}}">@{{todo.text}}</span>
        </li>
      </ul>
      <form ng-submit="addTodo()">
        <input type="text" ng-model="todoText"  size="30"
               placeholder="add new todo here">
        <input class="btn-primary" type="submit" value="add">
      </form>
    </div>

注意:@{{todo.done}}是一种告诉Blade忽略大括号的方法

有没有办法可以使用AngularJS而不包含像ng-controller,ng-repeat这样的标签:

我不想使用标签的原因包括: 1.将来我可能决定使用另一个JS框架,如Emberjs或任何其他更好的框架,所以,我必须找到我的刀片文件中的所有ng-tags删除它们

  1. 我只是不想告诉全世界,&#34;嘿,我正在使用AngularJS&#34;并非我为此感到骄傲,而是基于我的客户需要和安全理由。
  2. 提前感谢您的专家回复

2 个答案:

答案 0 :(得分:1)

可能能够避免使用ng指令。然而,这是一个非常糟糕的练习,并且它可能会被淘汰多年。

您只需要限制自己使用控制器,然后使用单个run调用来填充rootScope。然后,您只需手动引导应用程序:

var module = angular.module( 'myApp', [ ] ).run( function ( $rootScope ) {
    $rootScope.myVariable = 'hello world';
} );

angular.element( document ).ready( function ( ) {
    angular.bootstrap( document, [ 'myApp' ] );
} );

现在,为什么你不应该这样做:

  • Angular框架使用指令作为主要组件。不使用它们是一个非常糟糕的主意,因为使用它们实际上是使用Angular的全部要点。
  • 正如评论中所述,每个人都已经能够知道你在使用什么 - 如果他们正在查看源代码,他们肯定也会查看你的js库。

答案 1 :(得分:0)

作为最简单的解决方案之一。您可以更改角度

的开始和结束符号
var myApp = angular.module('myApp', [], function($interpolateProvider) {
    $interpolateProvider.startSymbol('[[');
    $interpolateProvider.endSymbol(']]');
});

然后,您的模板将如下所示:

[[ todo.text ]]

了解更多信息ng-docs