javascript - 为同一个 <tr> 中的多个 <td> 获取多个 Angularjs Controller

标签 javascript angularjs google-chrome ng-controller

我试图在同一个 tr 标签中添加多个 Angular Controller ,问题是 chrome 重写了表格以使其标准化,并且 HTML 表格层次结构中 tr 和 td 之间没有元素。

这是我目前拥有的,每种颜色代表要调用的不同 Controller 。 enter image description here 最终目标是拥有一个如下所示的表,其中一个或多个 td 使用不同的 Controller ,而不是一个或多个 tr angular_tr_td

我知道我可以使用全局 Controller 来处理所有数据,或者使用具有固定宽度的多个 div 元素来实现此目的,但我更喜欢使用单个 tr 表。

这是代码:

<table>
    <tr>
        <div ng-controller="testController">
            <td>{{testcontrollerscopevalue}}</td> <!-- empty when displayed -->
            <td>{{testcontrollerscopevalue2}}</td> <!-- empty when displayed -->
            <td>{{testcontrollerscopevalue3}}</td> <!-- empty when displayed -->
        </div>
        <div ng-controller="testController2"> 
            <td>{{testcontroller2scopevalue}}</td> <!-- empty when displayed -->
        </div>
    </tr>
</table>

以下作品:

 <table ng-controller="testController">
        <tr>
            <td>{{testcontrollerscopevalue}}</td> <!-- set when displayed-->
        </tr>
    </table>

这是 chrome 生成的内容:

<body>
<div ng-controller="testController"></div>
<div ng-controller="testController2"></div>
<table>
    <tbody>
    <tr>
        <td>{{testcontrollerscopevalue}}</td> <!-- out of scope-->
        <td>{{testcontrollerscopevalue2}}</td> <!-- out of scope-->
        <td>{{testcontrollerscopevalue3}}</td> <!-- out of scope-->
        <td>{{testcontroller2scopevalue1}}</td> <!-- out of scope-->
    </tr>
    </tbody>
</table>
<小时/>
 <table ng-controller="testController">
        <tbody>
        <tr>
            <td>{{testcontrollerscopevalue}}</td> <!-- set -->
        </tr>
        </tbody>
    </table>

有什么办法可以实现这个目标吗? 我可以使用任何标签来代替 div 来使其正常工作吗? 谢谢,

最佳答案

正如我们在 chat session 中详细讨论的那样,在这种情况下,最好使用 ControllerAs 语法并包装 <table>多个元素<div>保存每个 Controller 逻辑的元素。

我的建议类似于以下代码:

<div ng-controller="testController as tc">
  <div ng-controller="testController2 as tc2">
    <table>
      <tbody>
        <tr>
          <td>{{tc1.testcontrollervalue}}</td>
          <td>{{tc1.testcontrollervalue2}}</td>
          <td>{{tc1.testcontrollervalue3}}</td>
          <td>{{tc2.testcontroller2value1}}</td>
        </tr>
      </tbody>
    </table>
  </div>
</div>

为此,您的变量需要转换为 Controller 的属性,而不是 $scope 的属性。 .

var tc1 = this; //consistent reference to controller object
SomeService.get(function(data) {
  tc1.someProperty = data;
});

关于javascript - 为同一个 <tr> 中的多个 <td> 获取多个 Angularjs Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32596865/

相关文章:

html - Chrome 上的 Textarea 轮廓只是黑色

javascript - 如何通过网站让 chrome 登录用户的电子邮件 ID

android - Google plus 和 twitter 应用程序在 Android 上打开链接的位置

javascript - 类方法在哪里被调用?

javascript - 有人可以告诉我如何使这个jquery插件的滚动条从上到下运动吗?http ://plugins. jquery.com/project/vTicker

javascript - Angularjs Controller - 不平凡的初始状态

css - AngularJS bootstrap twitter 在点击后悬停在链接上,即使它不再悬停

javascript - 如何为 div 背景的不透明度设置动画?

c# - gridview 更新时确认消息

angularjs - 获取 AngularJS 错误 : "[$rootScope:inprog] $digest already in progress" without a manual $apply