2016-08-03 6 views
0

私はここに、最終的なURLを形成するために、角度を使用しています:ここでng-bind内で動作するAngularjsのパラメータを隠すには?

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

それが入力に入力されていなかった場合は、文字列からキャンペーンのパラメータを非表示にする方法は?

ありがとうございます!

+0

あなたはURLからキャンペーンのパラメータを非表示にしたいですか? –

+0

はい、下記のテキストエリアにあります。そして、それが何らかの値で満たされたときにだけそれを示してください。 – paus

+0

下記の私の答えを確認してください –

答えて

2

キャンペーンモデルをご覧になり、'?campaign=' + campaignを新しいモデル(campaignWithTextなど)で管理できます。

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

+1

修正プログラムは1つだけです:http://jsfiddle.net/8k6uppk5/ – paus

0

テキストボックスに文字列が入力されている場合は、「キャンペーン」という名前の変数を初期化するだけです。しかし、テキストボックスが空の場合は、変数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}'"/> 
1

個人的には、controllerでこの種のチェックを行います。

次の2つの方法でこれを行うことができます

:あなたの ビューで、

最後
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}'; 
    } 
} 

コントローラで、その後

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

または

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

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

私はあまりにもすべての答えの上にこの答えを好む。 –

関連する問題