如何在ng-bind中隐藏Angularjs中的参数

How to hide parameter in Angularjs working inside ng-bind?

本文关键字:Angularjs 参数 隐藏 ng-bind      更新时间:2023-09-26

我使用Angular在这里形成最终的URL:

<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="">
<p>Input the offer information your need to fill:</p>
<p>Adjust tracking link: <input type="text" ng-model="url"></p>
<p>Campaign: <input type="text" ng-model="campaign"></p>
<p>Adjust event token 1: <input type="text" ng-model="event1">Mobile goal id 1: <input type="text" ng-model="clickid1"></p>
<textarea style="width:600px; height:300px;" ng-bind="'http://' + url + '?campaign=' + campaign + '&event_callback_' + event1 + '=' + 'http://wavogo.go2cloud.org/aff_goal?a=lsr&goal_id=' + clickid1 + '&transaction_id={transaction_id}'"/>
</div>
</body>
</html>

以下是JSFiddle:http://jsfiddle.net/mx8o1ttq/

如果输入中没有输入活动参数,如何从字符串中隐藏该参数?

谢谢!

您可以通过新模型(例如campaignWithText)查看活动模型并管理您的'?campaign=' + campaign

$scope.$watch('campaign', function() {
      if($scope.campaign.length > 0 )
        $scope.campaignWithText = '?campaign=' + $scope.campaign;
      else
        $scope.campaignWithText = '';   
});

并更改您的文本区域:

<textarea style="width:600px; height:300px;" ng-bind="'http://' + url + campaignWithText + '&event_callback_' + event1 + '=' + 'http://wavogo.go2cloud.org/aff_goal?a=lsr&goal_id=' + clickid1 + '&transaction_id={transaction_id}'"/>

http://jsfiddle.net/ms403Ly8/128/

就我个人而言,我更喜欢在controller中进行这种检查。

你可以通过两种方式做到这一点:

($scope.campaign ? '?campaign=' + $scope.campaign : '')

($scope.campaign && '?campaign=' + $scope.campaign || '')

然后,在控制器中:

function MainCtrl($scope) {
  $scope.getContent = function() {
    return 'http://' + $scope.url + ($scope.campaign && '?campaign=' + $scope.campaign || '') + '&event_callback_' + $scope.event1 + '=' + 'http://wavogo.go2cloud.org/aff_goal?a=lsr&goal_id=' + $scope.clickid1 + '&transaction_id={transaction_id}';
  }
}

最后,在视图中:

<textarea style="width:600px; height:300px;" ng-bind="getContent()"></textarea>

如果文本框中填充了一些字符串,我只是用"campaign"初始化一个名为url的变量。但如果文本框为空,则使用空字符串初始化变量url。

<textarea style="width:600px; height:300px;" ng-init="url = campaign ?'campaign':''" ng-bind="'http://' + url + '?' +url + "=" + campaign + '&event_callback_' + event1 + '=' + 'http://wavogo.go2cloud.org/aff_goal?a=lsr&goal_id=' + clickid1 + '&transaction_id={transaction_id}'"/>