2015-11-17 18 views
0

當前有一個指令,即模板使用ng-repeat來創建按鈕列表。當使用隔離作用域時,列表會填充,但是當出於必要的原因,我將範圍更改爲true時,不再顯示列表。自改變指令範圍以來不顯示服務數據的指令

下面是代碼的一個粗略的例子...

指導作用

var list= function() { 
    return { 
     templateUrl: "list.html", 
     restrict: 'E', 
     scope: true, 
     link: function (scope, element, attrs) { 

      scope.id = scope.$eval(attrs.id); 
      scope.header = scope.$eval(attrs.header); 
      scope.items = scope.$eval(attrs.items); 

      // button listeners... 
     } 
    }; 
}; 

控制器

var self = this; 
self.duckItems = []; 
self.gooseItems = []; 

    dataSvc.getListItems() 
    .then(function (response) { 
        self.duckItems = response.data; 
        self.gooseItems = _.union(self.gooseItems, _.flatten(_.map(self.duckItems , function (duck) { 
         return _.map(duck.goose, function (goose) { 
          return {name: goose}; 
         }); 
        }))); 
       }, function (reason) { 
        console.log('crap ' + reason); 
       }); 

服務

serviceModule.service('dataSvc', ['$http', function ($http) { 
     var self = this; 
     self.getListItems= function() { 
      return $http.get('js/list_items.json'); 
     }; 
    }]); 

模板

<ul> 
     <li ng-repeat="item in items" ng-class="(item.selected ? 'RUIFW-selected' : '')" ng-click="click(item)"> 
      <label>{{ item.name }}</label> 
      <input type="checkbox" ng-model="item.selected" /> 
     </li> 
    </ul> 
+0

'作用域:true'是*不*隔離,它創建子作用域 – ajmajmajma

+0

是的問題是,當它從隔離{}更改爲true時,由於未提及的原因,數據不顯示。 –

+0

因爲它從父母繼承:) – ajmajmajma

回答

0

友好的編碼器在指令元素中添加了ng-if =「dataHasLoaded」,並在promise中將其翻轉爲true。我們有成功。

問題是該指令在服務完成之前加載。