2017-02-26 3 views
0

のために、私はasdと名前付きスコープオブジェクトを持つコントローラ、angularjs NG-場合は定義されてではなく、大切なオブジェクト

var app = angular.module("app",[]); 

app.controller("appCtrl", function($scope){ 
     $scope.asd = { 
      "name": "" 
    } 
}); 

を持っていると私はこのようなng-ifでhtmlコードでそれを使用しています。

<div ng-app="app"> 
    <div ng-controller="appCtrl"> 
    <p ng-if="asd.name"> 
     Defined {{asd.name}} 
    </p> 
    <p ng-if="!asd.name"> 
     Non Defined 
    </p> 
    </div> 
</div> 

このコードでは、Non Definedと記載していますが、これが定義されています。 Demo

ng-ifはオブジェクト値を検索しますか?オブジェクトの定義済みのプロパティを使用するにはどうすればよいですか?

+2

ng-ifはJavaScript(ex: 'if($ scope.asd.name)')のように機能します。表現が真実か偽であるかどうかをテストします。空の文字列は偽です。 https://docs.angularjs.org/api/ng/function/angular.isDefinedを使用する –

答えて

0

angular.isDefinedを使用することをおすすめします。その場合、それは削除することによって、あなたのコードを変更することが最良である:

<p ng-if="asd.name"> 
    Defined {{asd.name}} 
</p> 
<p ng-if="!asd.name"> 
    Non Defined 
</p> 

を、代わりにスコープ変数への結合に置き換えること - そしてasd.nameのためのチェックは、このようなあなたのコントローラ内部で行うことができます。

$scope.varStatus = ""; 
if(angular.isDefined($scope.asd.name)){ 
    $scope.varStatus = "Defined" $scope.asd.name; 
} 
else{ 
    $scope.varStatus = "Non Defined"; 
} 

は、その後、あなたのテンプレートでは、この(私だけvarStatus変数のスコープを使用して注意してください)を実行します。

<div ng-app="app"> 
    <div ng-controller="appCtrl"> 
    <p> 
     {{varStatus}} 
    </p>  
    </div> 
</div> 

をそれを試してみる、私はこれが役に立てば幸い。

関連する問題