Javascript 滚动视图不使用曲面fa大小滚动[未定义,为真]

Javascript 滚动视图不使用曲面fa大小滚动[未定义,为真],javascript,angularjs,famous-angular,Javascript,Angularjs,Famous Angular,我有一个滚动视图有一个fa-surface,其中包含我页面的html。“fa表面”的高度是动态的,因为它可以根据页面的宽度变大或变小 我已将fa修饰符size设置为fa size=[undefined,true](请阅读,true将高度设置为曲面高度) 这将导致页面无法滚动。如果我在fa size中放置一个固定的高度,它会起作用,但这对我没有好处,因为页面是响应性的,高度是动态的 以下是该页面的代码: <fa-app style="height:100%"> <fa-scr

我有一个
滚动视图
有一个
fa-surface
,其中包含我页面的html。“fa表面”的高度是动态的,因为它可以根据页面的宽度变大或变小

我已将
fa修饰符
size设置为
fa size=[undefined,true]
(请阅读,true将高度设置为曲面高度)

这将导致页面无法滚动。如果我在
fa size
中放置一个固定的高度,它会起作用,但这对我没有好处,因为页面是响应性的,高度是动态的

以下是该页面的代码:

<fa-app style="height:100%">
  <fa-scroll-view fa-pipe-from="eventHandler">
    <fa-view>
      <fa-modifier fa-size="[undefined, true]">
        <fa-surface fa-pipe-to="eventHandler">
          Misc HTML...
        </fa-surface>
      </fa-modifier>
    </fa-view>
  </fa-scroll-view>
</fa-app>
如果您对live页面的行为感到好奇,则它位于开发服务器上:

我不明白这为什么不起作用。。我是一个新的名人,但我已经在互联网上搜索了关于这个问题的答案,却发现很少


提前感谢您的输入。

因此,尽管我确实觉得将
fa修饰符的大小设置为
[undefined,true]
应该足以设置滚动内容的高度,但这还不够

所以我添加了一个功能,可以检查滚动条上内容的高度,并动态更新fa大小。以下是我为原始控制器添加的代码:

$scope.$on('$viewContentLoaded', function(){
  $famous.find('fa-scroll-view')[0].renderNode.sync.on('start', function(event) {
    var test = angular.element( document.querySelector( '#test' ) );
    $scope.testHeight = test[0].clientHeight;
  });
});

$scope.getTestHeight = function() {
  return $scope.testHeight;
}
然后我将视图中的
fa大小更改为
[undefined,getTestHeight()]


很可能有更好的方法可以做到这一点,最终我认为应该由著名的angular自动处理,但现在这就解决了问题。

我刚刚创建了一个服务,可以暂时处理宽度和高度的true,但也将问题记录在f/a问题跟踪程序中,希望团队能够解决

     var faTrueService = function($famous){

         this.height = function(cl){
            if($famous.find(cl)[0].renderNode._currentTarget !== null && $famous.find(cl)[0].renderNode._currentTarget.children[0] !== undefined){
                return $famous.find(cl)[0].renderNode._currentTarget.children[0].clientHeight;
            }
         };

         this.width = function(cl){
           if($famous.find(cl)[0].renderNode._currentTarget !== null && $famous.find(cl)[0].renderNode._currentTarget.children[0] !== undefined){
               return $famous.find(cl)[0].renderNode._currentTarget.children[0].clientWidth;
           }
         };

       };
在模板中,您现在可以执行以下操作:

    <fa-modifier fa-size="[undefined, faTrue.height('.item-1')]">
    <fa-view fa-index="1">
        <fa-surface class="item-1" fa-pipe-to="pageScrollHandler">
目标的child.fa曲面可能必须获得以下样式才能工作:

.fa-surface{
    overflow:hidden;
    height:auto;
    width:auto;
}
我不明白为什么前面的答案使用回调进行同步,这没有意义,特别是因为大小是在调整曲面大小时重新计算的,而不是在附加到scrollview的事件上


由于Scrollview的所有子项现在都具有高度,因此它将在Famo.us 0.3.0中自动调整其高度,谢谢。这是有道理的,不幸的是我暂时无法测试它。我使用sync是因为我特别尝试滚动页面,所以它是我使用的逻辑触发器。我的修好了,但我确信有更好的方法。这很有效。唯一的一件事是,我必须添加一个额外的
$名人.find(cl)[0]
检查,因为我有两个不同的曲面类型和不同的类名。
            //temp fix for true
            $scope.faTrue = {
              height : function(cl){
                return faTrue.height(cl);
              },
              width : function(cl){
                return faTrue.width(cl);
              }
            };
.fa-surface{
    overflow:hidden;
    height:auto;
    width:auto;
}