javascript - 将动态数据传递给 angularjs 指令的正确方法

标签 javascript angularjs angularjs-directive

我一直在开发一个 AngularJS 指令,它应该作为一个独立的小部件工作,可以通过以对象形式设置属性来配置它。我的主要目标如下:

  1. 根据传入属性的对象在指令内部进行处理。处理确实涉及获取 REST API 响应。所以我正在使用 Controller 来实现这一点。
  2. 在我的指令做了一些处理之后,它可能会改变我的父 Controller 应该能够改变的对象。

下面是涵盖我的目标的示例代码。

指令用法:

<post-listing page-id="currentPage.id" config="postConfig" posts="posts" />

指令代码

'use strict';

angular.module('myApp')
    .directive('postListing', function () {
      return {
          templateUrl: '/views/directive.post-listing.html',
          restrict: 'EA',
          scope: {
              page_id:"=", 
              config:"=",
              posts:"=",
          },
          controller: "DirectivePostListingCtrl"

        };
    });

指令 Controller 代码:

'use strict';

angular.module('myApp')
    .controller('DirectivePostListingCtrl', function ($scope, $rootScope, $routeParams)
    {
        // Here I want to access the page_id and config as the actual value

        // Here I will also update the posts array which is exposed to outside of directive.
    });

模板代码:

<h4>Displaying Posts for {{page.title}}</h4>
<ul>
    <li ng-repeat="p in posts" >{{p.title}}</li>
</ul>

当我运行这段代码时,它显示 $scope.page_id "undefined""currentPage.id"(基于运算符 selected = 或 @ ) 我希望它是 currentPage.id 的值。

请提出建议。

提前致谢。

最佳答案

您没有遵循独立范围属性名称的驼峰式命名规则。如果您使用此配置,您将能够访问页面 ID:

scope: {
    pageId: "=", 
    config: "=",
    posts: "=",
},

在 Controller 中:

console.log($scope.pageId);

关于javascript - 将动态数据传递给 angularjs 指令的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27646509/

相关文章:

javascript - Twitter bootstrap Accordion 折叠功能

javascript - 使用 typescript 缩小时,angularjs 未定义主模块

java - AngularJS 应用程序无法从服务器获取列表(Java Spring)

javascript - 如何将数据从指令模板传递到 Controller ?

javascript - 如何使用一个不明确的指令呈现不同的指令

javascript - 将图像 ID - 数组索引 - 从 JSON 传递到 Modal

javascript - 基于输入值的样式

javascript - 用于启用/禁用 div 内容滚动的复选框

angularjs - angular js 浏览器后退按钮在路由时不起作用

javascript - 通过 Angular JS 处理 APlayer - 动态播放音乐