Я приложил parameter
к моему $scope controller
, который содержит ряд keys: values
. То, что я хочу сделать, - это цикл через каждый из них и отображение имени и значения параметра, но перед отображением значения я хочу проверить, является ли это boolean
или number
, чтобы определить тип тега <input>
. Я новичок в Angular.js
, поэтому я не знаю, как оценивать выражение внутри директивы. Вот live example.Оценить выражение внутри пользовательской директивы
script.js
var myApp = angular.module('myApp', []);
myApp.controller('MyController', function ($scope){
$scope.name = "myObject";
$scope.parameters = [
{parm0: 45},
{parm1: 4.9},
{parm2: true},
{parm3: false}
];
});
myApp.directive('myInputDirective', function() {
return {
restrict: 'E',
replace: true,
template: '<div></div>',
link: function (scope, element, attrs) {
if (typeof scope.current === "number") {
element.append('<p>{{key}}</p><input type="range" value="{{value}}">');
} else {
element.append('<p>{{key}}</p><input type="checkbox" value="{{value}}">');
}
}
}
});
index.html
<!DOCTYPE html>
<html ng-app='myApp'>
<head>
<script data-require="[email protected]" data-semver="1.5.6" src="https://code.angularjs.org/1.5.6/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div ng-controller="MyController">
<h3>
{{name}}
</h3>
<ul ng-repeat="(key, value) in parameters" ng-init="current = value">
<my-input-directive></my-input-directive>
</ul>
</div>
</body>
</html>
Спасибо, это отображение ключей и значений, но типа ввода неправильно. Они все флажки – leota
Plunker обновлен, проблема в том, что typeof (текущий) === "number" должен быть typeof (scope.current) === "number" –