2016-06-28 76 views
0

我使用AngularJS 1.5.7版进行编码。指令不接收对象作为参数

由于某些原因,该指令没有收到变量cdata这是一个object

为什么指令不接收变量?

这里下面我贴我的所有代码:

home.js

'use strict'; 

var home = angular.module('app.home', [ 
    'global.factory', 
    'home.factory', 
    'ui.scroll', 
    'ui.scroll.jqlite', 
    'd.card' 
]); 

home.controller('HomeController', [ 
    'homeFactory', 
    '$timeout', 
    function (homeFactory, $timeout) { 

    var data = this; 

    data.posterSize = (screen.width - 42)/3; 

    homeFactory.getJSON().then(function (response) { 
     data.feed = response.home; 
    }); 

    data.datasource = { 
     get: function(index, count, success) { 
     $timeout(function() { 
      var start = Math.max(0, index); 
      var end = Math.min(index + count, data.feed.length); 

      var results = []; 
      for (var i = start; i < end; i++) { 
      results.push(data.feed[i]); 
      } 

      success(results); 
     }, 100); 
     } 
    }; 
    } 
]); 

_home.html

<article ng-controller="HomeController as myHome" class="base-gen" ui-scroll-viewport style="height:100%"> 
    <card class="card" ui-scroll="element in myHome.datasource" cdata="{{element}}" psize="{{myHome.posterSize}}"></card> 
</article> 

card.js

'use strict'; 

var dCard = angular.module('d.card', ['global.factory']); 

dCard.directive('card', [ 'globalImages', function (globalImages) { 
    return { 
    restrict: 'E', 
    scope: { 
     cdata: '@', 
     psize: '@' 
    }, 
    controller: function() { 
     console.log(this.cdata); 
    }, 
    controllerAs: 'myCard', 
    bindToController: true, 
    templateUrl: 'app/Modules/card.html' 
    }; 
}]); 

我也想指出的是,我从迁移到angular 1.4.81.5.7ui-router 0.2.150.3.1

+1

可能与[这个答案](http://stackoverflow.com/a/ 31013435/2435473) –

+0

听起来像是问题与ui-scroll模块有关。拿到凉亭后,没有更多的问题。谢谢大家! – DevStarlight

回答

2

在指令结合说“=”,这意味着角会做绑定您。不需要{{ }}

<article ng-controller="HomeController as myHome" class="base-gen" ui-scroll- viewport style="height:100%"> 
    <card class="card" ui-scroll="element in myHome.datasource" cdata="element" psize="{{myHome.posterSize}}"></card> 
</article> 

随着psize我不知道,如果你需要{{ }}但对于CDATA没有必要为括号

+0

我已更新帖子。我的代码在复制时出现错误。这里的要点是在我的目录中接收一个“只读”数据。 – DevStarlight

+1

你可以做什么而不是'@'是单向数据绑定..':: ='。使标记变得更清晰,我认为当你可以覆盖该行为时,在角度属性中使用“{{}}”进行标记看起来很奇怪 – Daniel

+0

哦!好的!我会记住这一点!非常感谢! – DevStarlight