2016-06-09 55 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

相關問題