javascript - ng-click 不自动更新 UI

标签 javascript html angularjs

我无法显示 <td>在我的 ng-repeat生成表。

最后<td>在表中应根据条件显示,如果 vm.editDeleteButtonsVisibile (使用 Controller-As 语法)为真。默认情况下,此值为 false,但当我将其更改为 true 时,UI 不会反射(reflect)更改。

这就是我的 <tbody>看起来:

<tbody ng-controller="EditProductController as vm"> <!-- This ng-controller is somewhere else -->
    <tr ng-repeat="product in vm.products">
        <td>{{ product.productName}}</td>
        <td>{{ product.productCode }}</td>
        <td>{{ product.releaseDate | date }}</td>
        <td>{{ product.price | currency }}</td>
        <td width="15%" ng-if="vm.editDeleteButtonsVisible"> <!-- Error Here -->
            <button type="button" class="btn btn-default" ng-click="vm.editItem(product.productCode)">Edit</button>
            <button type="button" class="btn btn-danger" ng-click="vm.deleteItem(product.productCode)">Delete</button>
        </td>
    </tr>
</tbody>

这是我更新值 vm.editDeleteButtonsVisible 的 Controller :

var EditProductController = function() {
    vm.editDeleteButtonsVisible = false; // Default value

    vm.showEditDeleteButtons = function() {
        vm.editDeleteButtonsVisible = true;
        console.log(vm.editDeleteButtonsVisible); // Prints true, so value was updated
    }
}

这就是vm.showEditDeleteButtons()正在被调用,从另一个 Angular 看:

<div id="editProductBtn" ng-controller="EditProductController as pvm">
    <button type="button" class="btn btn-default" ng-click="pvm.showEditDeleteButtons()">Edit Products</button>
</div>

问题可能是我已经声明了 ng-controller="EditProductController" ?我在它的主视图中声明一次,另一次在单独的 View 中声明。

最佳答案

您的问题是您定义了两次 Controller 。 Angular Controller 不是单例。所以你正在创建它的两个实例。您正在其中一个中更新变量并在另一个中查找它。这行不通。

<div id="editProductBtn" ng-controller="EditProductController as pvm">

<tbody ng-controller="EditProductController as vm"> 

创建两个实例。 您需要做的是使用一个 Controller 或创建一个服务(这是一个单例)并将变量保存在服务中。

关于javascript - ng-click 不自动更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46473529/

相关文章:

angularjs - 与指令的两种方式数据绑定(bind)不起作用

angularjs - Angular2 如何在 Guard 中获取目标 URL?

javascript - 获取输入字段的值,并用它们进行一些计算

javascript - 如何通过jspdf将单个图像放置在多个页面上?

html - 使用CSS在适当的位置显示文本和按钮

html - 使用 bootstrap 在 DOM 元素的直线行中对齐

javascript - Angular 返回一个空页面,即使所有数据都在那里

javascript - 状态是否在 shouldComponentUpdate 之后和渲染之前更新

javascript - 无法捕获 Android Tv webview 应用程序上的键码(HTML+Javascript)

javascript - 如何使用 Firefox/Firebug 或其他浏览器查看 jquery data()