javascript - 将 Angular Controller 应用于模板

标签 javascript angularjs

所以,我不确定我在问什么,但我想实现这个:

索引.html:

<div ng-view>

</div>
<script>
    angular.module('myApp', ['ngRoute'])
    .config(['$routeProvider', function ($routeProvider) {
        $routeProvider.when('/', { controller: "HomeController", templateUrl: '/Partials/Home/Dashboard.html' });

        $routeProvider.otherwise({ redirectTo: '/' });
    }]);
</script>

首页/Dashboard.html:

<h2 class="page-header">{{welcome}}</h2>

<!-- Insert my reusable component here -->

我的可重用组件将驻留在 MyComponent/Component.html 中,并有与之关联的 Controller myApp.component.controller

实际上,我想将可重用组件放入页面并将其绑定(bind)到我的 Controller 。所以我得到了这个:

.directive('MyComponent', function() {
    return {
      restrict: 'E',
      scope: {

      },
      templateUrl: '/MyComponent/Component.html'
    };
  });

那么我现在如何将我的 Controller 绑定(bind)到它呢?我是否这样做:

.directive('MyComponent', function() {
    return {
      restrict: 'E',
      resolve: function () {
        return /* resolve myApp.component.controller */;
      },
      templateUrl: '/MyComponent/Component.html'
    };
  });

最佳答案

当一个指令需要一个 Controller 时,它接收那个 Controller 作为它的第四个参数 链接功能。

.directive('MyComponent', function() {
    return {
      restrict: 'E',
      controller: 'MyController', // attach it.
      require: ['MyController','^ngModel'],    // required in link function
      templateUrl: '/MyComponent/Component.html',
      link: function(scope, element, attrs, controllers) {
         var MyController = controllers[0];
         var ngModelCtlr = controllers[1];
         ///...
      }
    };
  });

^ 前缀意味着该指令在其父元素上搜索 Controller (没有 ^ 前缀,该指令将仅在其自己的元素上查找 Controller )。

最佳实践:当您想向其他指令公开 API 时使用 Controller 。否则使用链接。

关于javascript - 将 Angular Controller 应用于模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26404112/

相关文章:

javascript - CSS对齐以适应不同的屏幕分辨率

javascript - 在 javascript/jquery 中为 JSON 创建 hashmap

Javascript:如何检测数组调用?

javascript - 使用 Javascript 通过 Adob​​e Air App 访问 Sharepoint 2007

angularjs - 我如何以 Angular 动态显示我的 Flash 消息。消息必须来自 API 响应

javascript - ngModelCtrl - $setViewValue 没有 $setDirty();

javascript - 扩展数据表 "fnInitComplete"?

javascript - 如何在 AngularJS 中根据侧边栏更新内容

javascript - ng-repeat 的问题

javascript - AngularJS,从外部源获取数据并插入数组