在Angular中调用inline funcion返回字符串

时间:2016-08-09 21:48:09

标签: angularjs

我想调用一个返回字符串的函数来构造一个url。这样的事情:

<div ng-repeat="campaign in campaigns">
    <a ng-href="{{ getHost(campaign.country)}}/campaign/{{campaign._id}}">View</a>
</div>

我的控制器代码:

$rootScope.getHost = function(code){
    ApiService.getHost(code).then(function(response) {
       return response.data.url;
    });
 }

我的提供者:

var getHost = function(code){

   var deferred = $q.defer();
   var $this = this;
   $http.get(host + "/api/findHosts?code="+code).then(function (response) {
       deferred.resolve(response);
   }, function (response) {
       deferred.reject(response);
   });

   return deferred.promise
}

我的函数getHost {{ getHost(campaign.country)}}返回主机取决于广告系列的国家/地区。但这不起作用。做这样的事情的方式是什么?谢谢!

1 个答案:

答案 0 :(得分:4)

在这种情况下我会使用<html> <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r73/three.min.js"></script> <script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/211120/orbitControls.js"></script> <a href="#" id="testButton">TEST</a> <a href="#" id="testButton2">TEST2</a> <script> var width = window.innerWidth; var height = window.innerHeight; var renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(width, height); document.body.appendChild(renderer.domElement); var video = document.createElement('video'); video.autoplay = true; video.src = 'https://streams.kolor.com/streams/833ec36d-b115-43a2-bbf1-aaca49046bab/source.02-720p_HD.mp4'; video.crossOrigin = ''; videoTexture = new THREE.Texture(video); videoTexture.minFilter = THREE.LinearFilter; videoTexture.magFilter = THREE.LinearFilter; videoTexture.format = THREE.RGBFormat; var scene = new THREE.Scene(); var cubeGeometry = new THREE.SphereGeometry(500, 60, 40); var sphereMat = new THREE.MeshBasicMaterial({map: videoTexture}); sphereMat.side = THREE.BackSide; var cube = new THREE.Mesh(cubeGeometry, sphereMat); scene.add(cube); var camera = new THREE.PerspectiveCamera(45, width / height, 0.1, 10000); camera.position.y = 50; camera.position.z = 100; //camera.position.set(0,50,100); scene.add(camera); var controls = new THREE.OrbitControls( camera); controls.enableDamping = true; controls.dampingFactor = 0.25; controls.enableZoom = false; controls.maxDistance = 50; controls.minDistance = 50; function render() { if( video.readyState === video.HAVE_ENOUGH_DATA ){ videoTexture.needsUpdate = true; } controls.update(); renderer.render(scene, camera); requestAnimationFrame(render); console.log("X:"+camera.position.x +"Y:"+camera.position.y+"Z:"+camera.position.z); } render(); // test button function // this does not work var testButton = document.getElementById('testButton'); testButton.onclick = function () { //camera.lookAt(new THREE.Vector3(50,60,70)); camera.position.y = 50; camera.position.z = 100; }; // another test button function // this does work but then the camera bounces back to what it was looking at before </script> </body> </html> ,在你用它调用的函数中构建url,然后在函数中调用带有ng-click的url。