![](/img/trans.png)
[英]Getting radio button value when button is clicked is not working angularjs
[英]Value not changing when radio button is pressed - AngularJS
我想做的是,当选择一种产品时,浏览器中会带来该产品的不同类型。 这是我得到的:
script.js
function showCtrl($scope, $http) {
$scope.products = [
{
"category":"Pens",
"label":"p1",
"images":"d-u-b/pens.png"
},
{
"category":"Cozies",
"label":"p2",
"images":"d-u-b/cozie.png"
}
];
$scope.prod = {"name": "Cozies"};
$scope.typSelect = 'plain';
$http.get("products/"+$scope.prod.name+".json").success(function(data){
$scope.type = data;
});
}
customo.php(被调用的代码段)
<div class="pro" ng-repeat="product in products">
<label for="{{product.label}}" class="p">
<input id="{{product.label}}" type="radio" ng-model="prod.name" name="name" value="{{product.category}}"/>
<h3>{{product.category}}</h3><img ng-src="{{product.images}}" alt="{{product.category}}"/>
</label>
</div>
我的问题是prod.name不会在js中更改,并且不会调用正确的json文件。 我在html中显示了prod.name,单击单选按钮时它会正确更改,但类型不会根据我选择的产品而更改。
谁能看到我在做什么错以及如何解决?
那是因为您的JavaScript代码没有注意该变量的更改。 为了使您的控制器遵守prod.name
您需要使用$scope
变量的$ watch方法。
$scope.$watch('prod.name', function () {
$http.get("products/"+$scope.prod.name+".json").success(function(data){
$scope.type = data;
});
});
不确定,但我认为您的$ http代码不正确。 我已经稍微更改了您的代码。 让我知道它是否符合您的期望。 基本上,我在单选按钮html上添加了ng-click指令。 单击后,它将在传入产品的范围内调用函数getData。 从那里,我提取类别并将其显示在控制台中。 您可以使用它来获取文件名并从json文件中获取数据。
script.js:
angular.module('app', [])
.controller('showCtrl', showCtrl);
function showCtrl($scope, $http) {
$scope.products = [
{
"category":"Pens",
"label":"p1",
"images":"d-u-b/pens.png"
},
{
"category":"Cozies",
"label":"p2",
"images":"d-u-b/cozie.png"
}
];
//$scope.prod = {"name": "Cozies"};
$scope.typSelect = 'plain';
$scope.getData = function(prod) {
// $http.get($scope.prod.name + ".json").success(function(data){
// $scope.type = data;
console.log('getting data from ' + prod.category);
};
}
index.html:
<!doctype html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body ng-controller="showCtrl">
<script src= "angular.js"></script>
<script src= "script.js"></script>
<div class="pro" ng-repeat="product in products">
<label for="{{product.label}}" class="p">
<input id="{{product.label}}" type="radio" ng-model="prod.name" name="name" value="{{product.category}}" ng-click="getData(product)"/>
<h3>{{product.category}}</h3>
<!-- <img ng-src="{{product.images}}" alt="{{product.category}}"/> -->
</label>
</div>
{{prod.name}}
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.