2017-01-31 92 views
1

我在这里有三个按钮,希望使$scope. -> q <-q为变量。我怎样才能做到这一点。这仅仅是一个测试代码我实际的问题是基于使q可变,所以请不要提出任何解决办法

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.name = function(q){ 
 
    $scope.a = "John Doe "; // $scope.q how to make q varibale 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
Name: <button ng-click="name('a')" ng-model="name">this is a</button> 
 
<button ng-click="name('b')" ng-model="name">this is b</button> 
 
<button ng-click="name('c')" ng-model="name">this is c</button> 
 
{{a}} via a<br> 
 
{{b}} via b<br> 
 
{{c}} via c<br> 
 
</div>

回答

4

只需加Q作为重点范围,因为在自然界$范围对象

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.name = function(q){ 
 
    $scope[q] = "John Doe "; // $scope.q how to make q varibale 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
Name: <button ng-click="name('a')" ng-model="name">this is a</button> 
 
<button ng-click="name('b')" ng-model="name">this is b</button> 
 
<button ng-click="name('c')" ng-model="name">this is c</button> 
 
{{a}} via a<br> 
 
{{b}} via b<br> 
 
{{c}} via c<br> 
 
</div>

+0

这是真正有用的却没有这个问题,经过$ scope.b设置在$为何值scope.a还存在吗?我怎么能绕过 – sam

+0

那是JS的变量值分配性质保留它,直到内存 –

+0

有没有解决方法是不要发生呢? – sam

1

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.name = function(q){ 
 
    $scope[q] = "John Doe "+ q; // $scope.q how to make q varibale 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
Name: <button ng-click="name('a')" ng-model="name">this is a</button> 
 
<button ng-click="name('b')" ng-model="name">this is b</button> 
 
<button ng-click="name('c')" ng-model="name">this is c</button> 
 
{{a}} via a<br> 
 
{{b}} via b<br> 
 
{{c}} via c<br> 
 
</div>

0

只需加Q作为重点$范围Beause $范围也是一个对象。 试试这个代码: -

控制器

var app = angular.module('myApp', []); 
app.controller('ctrl', function($scope) { 
    $scope.name = function(q){ 
    $scope[q] = "Sam"; // now $scope.q will be a varriable 
    } 
}); 

在HTML: -

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
<div ng-app="myApp" ng-controller="ctrl"> 
Name: <button ng-click="name('a')" ng-model="name">this is a</button> 
<button ng-click="name('b')" ng-model="name">this is b</button> 
<button ng-click="name('c')" ng-model="name">this is c</button> 
{{a}} via a<br> 
{{b}} via b<br> 
{{c}} via c<br> 
</div> 
相关问题