搜尋

首頁  >  問答  >  主體

angular.js - angular ng-focus ng-blur 存在問題

-.html

<input type="text" ng-focus="display = false" ng-blur="display = true" ng-init="display = true">
<p ng-show="display">aaa</p>

如上述程式碼,focus/blur可以正常控制p標籤的顯示與隱藏

-.html

<input type="text" ng-focus="display = false" ng-blur="hide()" ng-init="display = true">
<p ng-show="display">aaa</p>

-controller.js

$scope.hide = function (){
    $scope.display = true;
};

上述程式碼只要focus input,display一直是false, 求解。

續:

老衲服了,貼出專案代碼如下:

-.html

    <p class="form-group">
        <label class="form-label">应用名:</label>
        <span class="desc" ng-show="applyTips"
   ng-init="applyTips = true"> 应用名是您将要创建的应用的名称,组织内唯一</span>
       <span class="warn" ng-show="applyNameExit">应用名已存在,请重新输入</span>
       <span class="warn" ng-show="login.applyName.$error.pattern">您的应用名不正确</span>
       <p class="controls">
            <input type="text" name="applyName" class="form-control"
               ng-model="param.deployment.metadata.name"
               ng-pattern="/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/" ng-focus="applyTips=false"
               ng-blur="login.applyName.$error.pattern ? applyTips = false : nameIsExit();"
               required>
        </p>
    </p>
    

-controller.js

$scope.nameIsExit = function (){

    if($scope.param.deployment.metadata.name !='' && $scope.param.deployment.metadata.name != undefined){
        var param = {
            orgId: $localStorage.orgId,
            userId: $localStorage.userId,
            sessionId: $localStorage.sessionId,
            "name": $scope.param.deployment.metadata.name
        };
        deploymentService.applyNameisExit(param, function(res){
            if(res.code == 1415){
                $scope.applyTips = false;
                $scope.applyNameExit = true;
                $scope.submit = function(){
                    return;
                }
    
            }else{
                $scope.applyTips = true;
                $scope.applyNameExit = false;
    
            }
        });
    }
    else{
        $scope.applyTips = true;
    }
};

input失去焦點後,提示訊息不再顯示。

仅有的幸福仅有的幸福2744 天前553

全部回覆(2)我來回復

  • 滿天的星座

    滿天的星座2017-05-15 17:09:46

    ng-blur 裡面寫表達式就行
    ng-blur="isHide"

    在控制器中對isHide賦值
    $scope.isHide=true;

    同理ng-focus裡面也是一樣

    官網文件

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-15 17:09:46

    這位少年,我懷疑你姿勢有問題。

    <body ng-app="myApp">
        <p ng-controller="MyCtrl">
             <input type="text" ng-focus="display = false" ng-blur="hide()" ng-init="display = true">
             <p ng-show="display">aaa</p>
        </p>
        <script type="text/javascript">
            var app = angular.module('myApp', []);
            app.controller('MyCtrl',function($scope){
                $scope.hide = function (){
                    $scope.display = true;
                }
            });
        </script>
    </body>

    如果还有问题,我保证让你自切jj

    -------------------------------呵呵噠---------------- -----------------------

    $scope.param = {
        deployment:{
            metadata:{
    
            }
        }
    }
    

    開啟控制台看下錯誤訊息就能解決了。

    回覆
    0
  • 取消回覆