2

我是 AngularJS 的新手,正在尝试弄清楚如何根据变量值显示 HTML 元素。

我试过这个:

<div id="checkoutForm" class="form" ng-show="$scope.matchCount==1">
</div>

和这个:

<div id="checkoutForm" class="form" ng-show="matchCount==1">
</div>

到目前为止,这是我的代码:

<div id="visitorForm" class="form" ng-controller="VisitorLogController">
    <input id="firstNameTb" ng-model="formData.FIRSTNAME" placeholder="@Model.FirstNameStr" ng-blur="findUser()" class="form-control" value="{{FIRSTNAME}}"/>
    <input id="lastNameTb" ng-model="formData.LASTNAME" placeholder="@Model.LastNameStr" ng-blur="findUser()" class="form-control" value="{{LASTNAME}}" />
    <input id="companyTb" ng-model="formData.COMPANYNAME" placeholder="@Model.CompanyStr" ng-blur="findUser()" class="form-control" value="{{COMPANYNAME}}" />
    <input id="codeTb" ng-model="formData.CHECKCODE" placeholder="@Model.CodeString" title="@Model.CodeStringDesc" ng-blur="findUser()" class="form-control" />
</div>

<div id="checkoutForm" class="form" ng-show="matchCount==1">
    <h3>@Html.Raw(@Model.RecordFoundStr)</h3>
</div>

在我的 .js 文件中:

function VisitorLogController($scope, $http) {

    $scope.matchCount = null;
    $scope.findUser = function () {
        $http({
            method: 'POST',
            url: rootUrl + "VisitorLog/Check",
            data: $.param($scope.formData),
            headers: { 'Content-type': 'application/x-www-form-urlencoded' }
        }).success(function (data) {
            $scope.matchCount = data.count;
            if (data.count == 1) {
                $scope.FIRSTNAME = data.visitors[0].FirstName;
                $scope.LASTNAME = data.visitors[0].LastName;
                $scope.COMPANYNAME = data.visitors[0].CompanyName;
            }
            $scope.message = data.message;
        });
    }
}

该函数按预期触发,我可以看到计数并验证 $scope.matchCount 是否正确地使用记录计数进行更新,但它根本不会影响 UI。

我错过了什么?

4

1 回答 1

7

divwith在ofng-show="matchCount==1"之外。scopeVisitorLogController

移动ng-show内部scope应该使它工作。

<div ng-controller="VisitorLogController">
    <div id="visitorForm" class="form">
        <input id="firstNameTb" ng-model="formData.FIRSTNAME" placeholder="@Model.FirstNameStr" ng-blur="findUser()" class="form-control" value="{{FIRSTNAME}}"/>
        <input id="lastNameTb" ng-model="formData.LASTNAME" placeholder="@Model.LastNameStr" ng-blur="findUser()" class="form-control" value="{{LASTNAME}}" />
        <input id="companyTb" ng-model="formData.COMPANYNAME" placeholder="@Model.CompanyStr" ng-blur="findUser()" class="form-control" value="{{COMPANYNAME}}" />
        <input id="codeTb" ng-model="formData.CHECKCODE" placeholder="@Model.CodeString" title="@Model.CodeStringDesc" ng-blur="findUser()" class="form-control" />
    </div>

    <div id="checkoutForm" class="form" ng-show="matchCount==1">
        <h3>@Html.Raw(@Model.RecordFoundStr)</h3>
    </div>
</div>
于 2014-06-02T21:41:21.833 回答