2017-07-11 21 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

是不會介意保持.. –