Попытка использовать кнопку, чтобы установить значение в $ scope

0

Я пытаюсь использовать этот код ниже, чтобы установить значение в $ scope при нажатии кнопки. Кажется, он не работает - как мне это сделать? Я искал множество других вопросов, касающихся кнопок, но это не совсем конкретная проблема.

<input type="button" value="Not Important" ng-click="setImportance(1)">
<input type="button" value="Important" ng-click="setImportance(2)">
<input type="button" value="Extremely" ng-click="setImportance(3)">


$scope.setImportance = function (value){
    if (Number(value) == 1){
        $scope.question.importance = "notImportant";
        console.log("$scope.question.importance: " + $scope.question.importance)
    } else if (Number(value) == 2){
        $scope.question.importance = "important";
        console.log("$scope.question.importance: " + $scope.question.importance)
    } else if (Number(value) == 3){
        $scope.question.importance = "veryImportant";
        console.log("$scope.question.importance: " + $scope.question.importance)
    }
    console.log(Number(value));
    console.log("importance is: " + $scope.question.importance)
}
Теги:

3 ответа

3
Лучший ответ

Поскольку вы ничего не делаете со value вам может быть намного проще установить значение непосредственно в клике, а не использовать if/else.

<input type="button" value="Not Important" ng-click="question.importance = 'notImportant'">
<input type="button" value="Important"  ng-click="question.importance = 'important'">
<input type="button" value="Extremely"  ng-click="question.importance = 'veryImportant'">
  • 0
    большое спасибо! , ,
  • 0
    @Femtosecond np :) не стесняйтесь отмечать как ответ, если это решит вашу проблему
0

Существует много других способов добиться того, что вы пытаетесь сделать. Но приятно сначала знать, что не так с кодом.

Сначала вы должны инициализировать объект перед доступом к свойству этого объекта. Для конкретного случая вам нужно инициализировать $scope.question с пустым объектом. Просто чтобы компилятор знал, что это объект.

$scope.question = {};

Когда вы пытаетесь выполнить $ scope.question.importance без его инициализации, интерпретатор попытается найти вопрос для проверки свойства. Но он не может найти его, поскольку он не определен.

Давайте посмотрим на это с помощью очень простой фигуры.

Изображение 174551

После того, как значение $ scope.question.importance задано с некоторым значением, оно будет выглядеть так:

Изображение 174551 Также обратите внимание, что вам не нужно указывать Number. Оба пути должны работать, это просто не нужно

Тогда это должно сработать!

https://jsfiddle.net/rzg53u03/

  • 0
    Вы поняли эту идею?
0

Другой способ сделать это в contoller - это как в демо ниже или в этом jsfiddle.

angular.module('demoApp', [])
.controller('mainController', function($scope) {
    var mapping = {
            '1': 'Not important',
            '2': 'Important',
            '3': 'Very important'
        };
    $scope.question = {
        importance: ""
    };
    
    $scope.setImportance = function(value) {
        $scope.question.importance = mapping[value];
    };
    
    $scope.setImportance(1); //init default
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="demoApp" ng-controller="mainController">
    <input type="button" value="Not Important" ng-click="setImportance(1)"/>
    <input type="button" value="Important" ng-click="setImportance(2)"/>
    <input type="button" value="Extremely" ng-click="setImportance(3)"/>
    {{question.importance}}
</div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню