【问题标题】:AngularJS - Access a View element by Id from its associated ControllerAngularJS - 通过 Id 从其关联的控制器访问视图元素
【发布时间】:2016-07-12 14:31:30
【问题描述】:

在控制器中,我希望访问视图中的元素,以便在用户调用操作时对其进行操作。我目前正在使用 JQuery 和 JSTree,我目前的解决方案是:

$('#jstree_demo_div').jstree(true).hide_node(item);

这行得通!

当我创建相同视图和控制器的第二个实例时,会出现我的问题。因为我使用$('#jstree_demo_div') 选择views 元素,所以当在任一控制器实例中调用上述内容时,它总是选择DOM 中的第一个jstree_demo_div 实例,因此只有一个视图正常工作。

如何限制我的控制器只获取其关联视图范围内的元素?

我的看法是这样的:

<div class="container" ng-controller="listingsController">
    <div class="row">
        <div class="col-xs-12 col-sm-9 col-md-4">
            <label style="position:fixed">Customers</label>
            <div style="overflow: auto; height:300px; margin-top:20px" id="jstree_demo_div" role="tree" aria-multiselectable="true"></div>
        </div>
    </div>
</div>

【问题讨论】:

  • 你的 jQuery 有问题。
  • 您好,您能否详细说明一下:“当我创建相同视图和控制器的第二个实例时。”。
  • 嗯...身份证是独一无二的,所以你永远不会找到多个。
  • @ajaysinghdav10d 我试图显示相同的数据两次。因此,在屏幕的两个部分中,我有相同的树和相同的数据,但它们都是不同的实例。
  • @Goliadkin 我得到的 id 是唯一的,但是我如何与同一视图的多个实例进行交互?

标签: javascript jquery html angularjs jstree


【解决方案1】:

Angular 的方法是创建一个包含你的 jstree 的指令,然后在你的视图上放置多个副本。在指令的链接函数中,您可以访问仅代表该指令子级的 jQuery 对象。在那里你可以使用选择器来做一些工作。请参阅https://docs.angularjs.org/guide/directive 上的“创建操作 DOM 的指令”部分。

【讨论】:

  • 你说得对,我只需要做出自己的指示。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多