2016-06-09 53 views
0

我有一个Angular应用程序,应该有一个分割屏幕与两半,他们都具有相同的数组值。宽度和高度值在服务中设置并由控制器调用。该样式在DOM上以ng样式设置。但是,左半部分没有正确分开,右半部分是。我这里有问题的图像:Angular CSS:ng风格工作的一半,而不是其他

enter image description here

下面是相关代码:

riderSettingsHalf.html

<div ng-controller="RiderSettingsHalf"> 
    <table> 
     <tbody> 
      <tr class="rider-settings-half-bar" ng-repeat="item in items" ng-style="{ 'width': wdt, 'height': hgt }"><td>{{item}}</td></tr> 
     </tbody> 
    </table> 
</div> 

这里是所有相关的角码。我认为问题在于控制器,但我也包含了服务和指令。

angular.module('app').controller('RiderSettingsHalf', ['$scope', 'BarSize', function($scope, BarSize){ 
    var BS = BarSize.getBar(); 
    $scope.wdt = BS.wdt; 
    $scope.hgt = BS.hgt; 


    var items = { 
     trip1: "TRIP 1", 
     trip2: "TRIP 2", 
     rideData: "RIDE DATA", 
     status: "VEHICLE STATUS", 
     info: "VEHICLE INFO", 
     audio: "AUDIO", 
     bluetooth: "BLUETOOTH", 
     image: "CUSTOM IMAGE" 
    }; 

    $scope.items = items; 
}]); 

angular.module('app').directive('riderSettingsScreen', ['BarSize', function(BarSize){ 
    return { 
     templateUrl: 'public/templates/riderSettingsHalf.html', 
     link: function(scope, elem, attrs){ 
      var settingBarHeight = elem[0].parentNode.offsetHeight/5; 
      var settingBarWidth = elem[0].parentNode.offsetWidth; 
      BarSize.setBar(settingBarHeight, settingBarWidth); 
     } 
    }; 
}]); 

angular.module('app').service('BarSize', function(){ 
    var val = {}; 

    this.setBar = function(h, w){ 
     val = {hgt: h, wdt: w}; 
     console.log(val); 
    }; 
    this.getBar = function(){ 
     return val; 
    }; 
}); 
+1

为什么过于复杂的事情与'BarSize'服务。只需在您的指令中计算尺寸并在指令范围中分配值即可。你也可以将控制器指定为指令的“控制器” – Phil

+0

我应该这样做!我会让你知道它是否有效。 –

+0

有用菲尔谢谢你。 –

回答

1

我简化它,并把它所有的指令:

return { 
    restrict: 'EA', 
    templateUrl: 'public/templates/riderSettingsHalf.html', 
    link: function(scope, elem, attrs){ 
     scope.wdt = elem[0].parentNode.offsetWidth; 
     scope.hgt = elem[0].parentNode.offsetHeight/5; 
     scope.items = { 
      trip1: "TRIP 1", 
      trip2: "TRIP 2", 
      rideData: "RIDE DATA", 
      status: "VEHICLE STATUS", 
      info: "VEHICLE INFO", 
      audio: "AUDIO", 
      bluetooth: "BLUETOOTH", 
      image: "CUSTOM IMAGE" 
     }; 
    } 
}; 
+0

两个调用中'settingBarHeight'的值是否相同?我的直觉是,第一次调用可能会影响parentNode的高度。我仍然不知道为什么你需要这个复杂的解决方案,如果想法是平均分配高度...使用flexbox而不是表格。 – Diego

相关问题