angular.dart - 观看阴影DOM元素的控制器准备好了吗?

时间:2014-02-11 17:27:49

标签: dart angular-dart

我知道你的NgComponent可以扩展NgShadowRootAware ......但我似乎无法对我的控制器产生同样的影响。

我在范围内观察了一个变量,希望到那时候事情已经准备就绪,但事实并非如此。问题是我的模板隐藏了HTML,直到数据的异步调用完成。然后它显示填充了API调用数据的HTML。我想将事件监听器绑定到隐藏HTML中的输入元素。

我想我可以创建另一个组件,但我觉得它有点傻,因为它特别是在控制器中,与控制器相关,不会在其他任何地方,并且只是一个微小的输入元素。

我做了一个空的$ watch并且一直试图设置输入元素并确定它在最后一个摘要上,但这似乎有点低效。这是我唯一的选择吗?

以下是一些代码:

<div ng-if="!ctrl.assetsLoaded">
  <span class="loading-message">{{ctrl.message}}</span>
</div>

<div ng-if="ctrl.assetsLoaded">

  <nav id="controls">
    <div class="asset-actions">
      <a href="#/" class="home-folder"></a>
      <div class="folder-path">...</div>

      <span class="create-asset choose-file">
        <input type="file" id="single-file" name="file" ng-model="singleFile" />
      </span>
      <a href="#/addFolder" class="create-folder"></a>
      <search-asset name-filter-string="ctrl.nameFilter" class="search-asset"></search-asset>
    </div>

基本上,我是在ng-if中的输入元素之后。我希望看到这种变化。我现在正在考虑使用ng-model(而不是Dart的事件监听器),但我只是遇到来自AngularJS的混乱。

2 个答案:

答案 0 :(得分:1)

为什么不使用ng-showng-hide代替ng-ifng-if从字面上删除DOM树中的节点。这可能会产生不良后果(即您的听众丢失等)。 ng-show/ng-hide只显示和隐藏dom节点,它们不会被删除。在你的情况下,我没有看到你会注意到很多性能差异,你的代码会变得更加混乱。

答案 1 :(得分:0)

<input type="file" id="single-file" name="file" ng-model="ctrl.singleFile" />

并且在你的控制器上你使singleFile成为一个getter / setter,你可以在setter上添加你的代码,每次输入值改变时都会执行。