2017-07-11 22 views
1

我的角度js代码不解决占位符,而我试图让它在运行时解决。Angular JS:占位符没有得到解决

JS代码:

var message ={s:"hello {{name}}"}; 

angular.module("myapp",[]).controller("myctrl", function($scope){ 

    var ctrl=this; 

    $scope.name="david"; 
    $scope.w=message.s; 

    $scope.call=function(){ 
    //alert(message); 
    }; 

}); 

HTML:

<div ng-app="myapp"> 
    <div ng-controller="myctrl as ctrl"> 
     {{w}} 
     <input type="text" ng-model="ctrl.name" /> 
     <input type="submit" ng-click="call();" /> 
    </div> 
</div> 

预期输出是:您好大卫;

附加小提琴链接:https://jsfiddle.net/rakotkar/o46coezd/2/

+0

你必须使用'{{名}}'(插值)只在模板 –

回答

0

你混合了控制器的语法和$scope。当您使用控制器作为语法时,您必须使用this关键字而不是$scope

JS

var message ={s:"hello "}; 

angular.module("myapp",[]).controller("myctrl",function(){ 

    var ctrl = this; 

    ctrl.name ="david"; 
    ctrl.w = message.s; 
    ctrl.call = function(){ 
    //alert(message); 
    }; 

}); 

HTML

<div ng-app="myapp"> 
    <div ng-controller="myctrl as ctrl"> 
     {{ctrl.w}}{{ctrl.name}} 
     <input type="text" ng-model="ctrl.name" /> 
     <input type="submit" ng-click="call();" /> 
    </div> 
</div> 

演示https://jsfiddle.net/o46coezd/4/

有关控制器作为语法的详细信息:AngularJs "controller as" syntax - clarification?

+0

它不会帮我,按我的实际业务场景,我需要显示不同消息,我需要在消息中填充不同的属性。 –

+0

什么不同的消息和属性? – Vivz

+0

试图解释相同。请参考https://jsfiddle.net/rakotkar/o46coezd/16/ –

0

你可以尝试如下。当你试图从模块外访问示波器时,我认为这是不可能的。

<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script> 
 
<body> 
 

 
<div ng-app="myapp"> 
 
<div ng-controller="myctrl as ctrl"> 
 
{{w}} 
 
<input type="text" ng-model="ctrl.name"/> 
 
<input type="submit" ng-click="call();"/> 
 
</div> 
 
</div> 
 
<script> 
 
var message ={s:"hello"}; 
 
angular.module("myapp",[]).controller("myctrl", function($scope){ 
 

 
    var ctrl=this; 
 
    $scope.text = message; 
 
    $scope.name="david"; 
 
    $scope.w= $scope.text.s + ' ' + $scope.name; 
 

 
    $scope.call=function(){ 
 
    //alert(message); 
 
    }; 
 

 
}); 
 
</script> 
 

 
</body> 
 
</html>

+0

它不会帮助,因为我有一个大的消息字符串,需要在两者之间的地方持有人和这些占位符将解决一旦答复来自api,然后分配为范围变量。 –

+0

比你可以保持你的“消息”变量内部模块? – Arun

+0

是不会介意保持.. –