Angularjs不会神奇地创建输入元素进行编辑

时间:2014-03-01 16:52:06

标签: javascript angularjs

我正在尝试通过使用AngularJS触发ng-click功能来实时编辑元素。

这是我的html:

<div class="row question">{{questions.1.name}} <a href="" class="glyphicon glyphicon-pencil" ng-click="editQuestion(questions.1.name)"></a></div>

和js:

function QuestionsMap($scope) {
$scope.questions = {
"1": {
  "name": "Hello! Do you like to travel?",
  "ID": "1",
  "answer": {
    "yes": {
      "name": "Yes",
    },
    "no": {
      "name": "No",
    }
  }
}

};
$scope.editQuestion = function (name) {
  $scope.editing = $scope.questions[name];
};
}

我错过了什么? editQuestion函数是否写得不正确?

3 个答案:

答案 0 :(得分:2)

$scope.questions[name]不是什么。没有$scope.questions["Hello, do you like to travel"]。但是有一个$scope.questions["1"]。尝试传递questions.1.ID而不是questions.1.name


@ c-smile也是对的。不要用整数开始你的键。这在js中是不允许的。为此,您需要切换到'n1'

之类的内容

答案 1 :(得分:1)

这个questions.1.name是JS透视图中不正确的语法。 JS中变量的名称不能从数字开始。因此,您应该将代码重构为以下内容:

<div class="row question">{{questions.n1.name}}

等等

"n1": { ... }

答案 2 :(得分:1)

输入字段不会神奇地显示你必须编码。

<input type="text" ng-model="newquestion"><input type="button" ng-click="add()" value="save">

控制器,您可以像$scope.questions.push({'name':$scope.newquestion.name,'id':$scope.newquestion.id});

一样指定要推送的内容
$scope.add = function(){
    $scope.questions.push($scope.newquestion);
    $scope.newquestion = "";    
};