Pregunta

Soy nuevo en AngularJS y estoy tratando de averiguar cómo mostrar un elemento HTML basado en el valor de una variable.

He intentado hacer esto:

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

y esto:

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

Aquí está mi código hasta el momento:

<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>

Y en mi .archivo 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;
        });
    }
}

La función de incendios como se esperaba y puedo ver el recuento y comprobar que $scope.es igual a matchcount está correctamente actualizándose con el número de registro, pero no afecta a la interfaz de usuario en absoluto.

Lo que me estoy perdiendo?

¿Fue útil?

Solución

El div con ng-show="matchCount==1" está fuera de la scope de VisitorLogController.

Mover el ng-show dentro de la scope debe hacer que funcione.

<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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top