Javascript 表达式angularjs中的组合属性

Javascript 表达式angularjs中的组合属性,javascript,angularjs,Javascript,Angularjs,我有一个控制器,它的作用域中有联系人对象 如果联系人有名字或姓氏,我想显示名字姓氏 我的问题是,当联系人没有名字或姓氏时。在这种情况下,我想向用户显示创建新联系人,但因为表达式中的名字和姓氏之间有空格,所以它只显示空格 开始输入,你会发现,基本上,两个div应该显示相同的内容 angular.module('myApp',[])。 控制器('ctrl',函数($scope){ //$scope.contact={ //名字:'第一', //姓氏:“last” //} $scope.contac

我有一个控制器,它的作用域中有联系人对象

如果联系人有名字或姓氏,我想显示
名字
姓氏

我的问题是,当联系人没有名字或姓氏时。在这种情况下,我想向用户显示
创建新联系人
,但因为表达式中的名字和姓氏之间有空格,所以它只显示空格

开始输入,你会发现,基本上,两个div应该显示相同的内容

angular.module('myApp',[])。
控制器('ctrl',函数($scope){
//$scope.contact={
//名字:'第一',
//姓氏:“last”
//}
$scope.contact={};
});


{{contact.FirstName+''+contact.LastName | | |'创建新联系人'}}
{{contact.FirstName+contact.LastName | |'创建新联系人'}
如果我正确理解您的问题,您可以使用
ng show
/
ng hide

<div data-ng-app="myApp" data-ng-controller="ctrl">
    <span ng-show="contact.FirstName && contact.LastName">
        {{contact.FirstName + ' ' + contact.LastName}}
    </span>
    <span ng-hide="contact.FirstName && contact.LastName">
        Create new contact
    </span>
</div>

{{contact.FirstName+''+contact.LastName}
创建新联系人

这就是你想要的吗?

如果我正确理解你的问题,你可以使用
ng show
/
ng hide

<div data-ng-app="myApp" data-ng-controller="ctrl">
    <span ng-show="contact.FirstName && contact.LastName">
        {{contact.FirstName + ' ' + contact.LastName}}
    </span>
    <span ng-hide="contact.FirstName && contact.LastName">
        Create new contact
    </span>
</div>

{{contact.FirstName+''+contact.LastName}
创建新联系人

这就是你想要的吗?

如果我正确理解你的问题,你可以使用
ng show
/
ng hide

<div data-ng-app="myApp" data-ng-controller="ctrl">
    <span ng-show="contact.FirstName && contact.LastName">
        {{contact.FirstName + ' ' + contact.LastName}}
    </span>
    <span ng-hide="contact.FirstName && contact.LastName">
        Create new contact
    </span>
</div>

{{contact.FirstName+''+contact.LastName}
创建新联系人

这就是你想要的吗?

如果我正确理解你的问题,你可以使用
ng show
/
ng hide

<div data-ng-app="myApp" data-ng-controller="ctrl">
    <span ng-show="contact.FirstName && contact.LastName">
        {{contact.FirstName + ' ' + contact.LastName}}
    </span>
    <span ng-hide="contact.FirstName && contact.LastName">
        Create new contact
    </span>
</div>

{{contact.FirstName+''+contact.LastName}
创建新联系人

这就是您想要的吗?

这里有两个选项1创建一个函数,如果您有名字或姓氏,则返回true或false,或者验证为html:

解决方案1:

angular.module('myApp', []).
controller('ctrl', function($scope) {  
  $scope.contact = {};
  $scope.verifyContacts =  function(){
     return contact.FirstName || contact.LastName;
 }
});

<div data-ng-app="myApp" data-ng-controller="ctrl">    
  <span ng-hide="verifyContacts()">Create new contact</span>
  <span ng-show="verifyContacts()">{{contact.FirstName + ' ' + contact.LastName}}</span>
</div>
angular.module('myApp',[])。
控制器('ctrl',函数($scope){
$scope.contact={};
$scope.verifyContacts=函数(){
返回contact.FirstName | | contact.LastName;
}
});
创建新联系人
{{contact.FirstName+''+contact.LastName}
Soution 2:

angular.module('myApp', []).
controller('ctrl', function($scope) {  
  $scope.contact = {};
  $scope.verifyContacts =  function(){
     return contact.FirstName || contact.LastName;
 }
});

<div data-ng-app="myApp" data-ng-controller="ctrl">    
  <span ng-hide="verifyContacts()">Create new contact</span>
  <span ng-show="verifyContacts()">{{contact.FirstName + ' ' + contact.LastName}}</span>
</div>
此解决方案将涉及从上述解决方案内联编写verifyContacts函数的表达式,因此您的html将如下所示:

<div data-ng-app="myApp" data-ng-controller="ctrl">
 <span ng-hide="contact.FirstName || contact.LastName">Create new contact</span>
  <span ng-show="contact.FirstName || contact.LastName">{{contact.FirstName + ' ' + contact.LastName}}</span>
</div>

创建新联系人
{{contact.FirstName+''+contact.LastName}
我个人更喜欢第一种解决方案

编辑:呈现第三种解决方案:p

解决方案3: 如果名字可用,您可以在名字的末尾添加一个空格,这样就不需要在字符串中加空格

angular.module('myApp', []).
    controller('ctrl', function($scope) {  
      $scope.contact = {};
      contact.FirstName = contact.FirstName ?  contact.FirstName + ' ' : contact.FirstName;
     }
    });

<div> {{contact.FirstName + contact.LastName || 'Create new contact'}} </div>
angular.module('myApp',[])。
控制器('ctrl',函数($scope){
$scope.contact={};
contact.FirstName=contact.FirstName?contact.FirstName+“”:contact.FirstName;
}
});
{{contact.FirstName+contact.LastName | |'创建新联系人'}

这将起作用,但正如您在代码中看到的那样,输入字段没有显示,因此您很可能需要一个后端函数来实现该功能或其他功能。

您这里有两个选项1创建一个函数,如果您有姓或名,或者验证为html,则返回true或false:

解决方案1:

angular.module('myApp', []).
controller('ctrl', function($scope) {  
  $scope.contact = {};
  $scope.verifyContacts =  function(){
     return contact.FirstName || contact.LastName;
 }
});

<div data-ng-app="myApp" data-ng-controller="ctrl">    
  <span ng-hide="verifyContacts()">Create new contact</span>
  <span ng-show="verifyContacts()">{{contact.FirstName + ' ' + contact.LastName}}</span>
</div>
angular.module('myApp',[])。
控制器('ctrl',函数($scope){
$scope.contact={};
$scope.verifyContacts=函数(){
返回contact.FirstName | | contact.LastName;
}
});
创建新联系人
{{contact.FirstName+''+contact.LastName}
Soution 2:

angular.module('myApp', []).
controller('ctrl', function($scope) {  
  $scope.contact = {};
  $scope.verifyContacts =  function(){
     return contact.FirstName || contact.LastName;
 }
});

<div data-ng-app="myApp" data-ng-controller="ctrl">    
  <span ng-hide="verifyContacts()">Create new contact</span>
  <span ng-show="verifyContacts()">{{contact.FirstName + ' ' + contact.LastName}}</span>
</div>
此解决方案将涉及从上述解决方案内联编写verifyContacts函数的表达式,因此您的html将如下所示:

<div data-ng-app="myApp" data-ng-controller="ctrl">
 <span ng-hide="contact.FirstName || contact.LastName">Create new contact</span>
  <span ng-show="contact.FirstName || contact.LastName">{{contact.FirstName + ' ' + contact.LastName}}</span>
</div>

创建新联系人
{{contact.FirstName+''+contact.LastName}
我个人更喜欢第一种解决方案

编辑:呈现第三种解决方案:p

解决方案3: 如果名字可用,您可以在名字的末尾添加一个空格,这样就不需要在字符串中加空格

angular.module('myApp', []).
    controller('ctrl', function($scope) {  
      $scope.contact = {};
      contact.FirstName = contact.FirstName ?  contact.FirstName + ' ' : contact.FirstName;
     }
    });

<div> {{contact.FirstName + contact.LastName || 'Create new contact'}} </div>
angular.module('myApp',[])。
控制器('ctrl',函数($scope){
$scope.contact={};
contact.FirstName=contact.FirstName?contact.FirstName+“”:contact.FirstName;
}
});
{{contact.FirstName+contact.LastName | |'创建新联系人'}

这将起作用,但正如您在代码中看到的那样,输入字段没有显示,因此您很可能需要一个后端函数来实现该功能或其他功能。

您这里有两个选项1创建一个函数,如果您有姓或名,或者验证为html,则返回true或false:

解决方案1:

angular.module('myApp', []).
controller('ctrl', function($scope) {  
  $scope.contact = {};
  $scope.verifyContacts =  function(){
     return contact.FirstName || contact.LastName;
 }
});

<div data-ng-app="myApp" data-ng-controller="ctrl">    
  <span ng-hide="verifyContacts()">Create new contact</span>
  <span ng-show="verifyContacts()">{{contact.FirstName + ' ' + contact.LastName}}</span>
</div>
angular.module('myApp',[])。
控制器('ctrl',函数($scope){
$scope.contact={};
$scope.verifyContacts=函数(){
返回contact.FirstName | | contact.LastName;
}
});
创建新联系人
{{contact.FirstName+''+contact.LastName}
Soution 2:

angular.module('myApp', []).
controller('ctrl', function($scope) {  
  $scope.contact = {};
  $scope.verifyContacts =  function(){
     return contact.FirstName || contact.LastName;
 }
});

<div data-ng-app="myApp" data-ng-controller="ctrl">    
  <span ng-hide="verifyContacts()">Create new contact</span>
  <span ng-show="verifyContacts()">{{contact.FirstName + ' ' + contact.LastName}}</span>
</div>
此解决方案将涉及从上述解决方案内联编写verifyContacts函数的表达式,因此您的html将如下所示:

<div data-ng-app="myApp" data-ng-controller="ctrl">
 <span ng-hide="contact.FirstName || contact.LastName">Create new contact</span>
  <span ng-show="contact.FirstName || contact.LastName">{{contact.FirstName + ' ' + contact.LastName}}</span>
</div>

创建新联系人
{{contact.FirstName+''+contact.LastName}
我个人更喜欢第一种解决方案

编辑:呈现第三种解决方案:p

解决方案3: 如果名字可用,您可以在名字的末尾添加一个空格,这样就不需要在字符串中加空格

angular.module('myApp', []).
    controller('ctrl', function($scope) {  
      $scope.contact = {};
      contact.FirstName = contact.FirstName ?  contact.FirstName + ' ' : contact.FirstName;
     }
    });

<div> {{contact.FirstName + contact.LastName || 'Create new contact'}} </div>
angular.module('myApp',[])。
控制器('ctrl',函数($scope){
$scope.contact={};
contact.FirstName=contact.F