Angularjs 将表单值传递给不工作的函数
编辑:当我在表单中更改ng model=“$parent.selectedAnswer”时,它可以工作。如果有人能解释的话,我会记下来作为答案 我试图在单击“下一步”按钮时将选定的单选按钮值收集到角度函数,但它始终未定义。我真的搞不懂怎么了。单选按钮和值在html中正确填充。只有当单击“下一步”并尝试传入所选值时,它才会失败 我的逻辑很简单:每个单选按钮的值都是[branchid、leafid、answerid]的数组。单击next时,我尝试将该值绑定到“selectedAnswer”模型,并将其传递给angularjs端的next()函数 以下是相关代码:Angularjs 将表单值传递给不工作的函数,angularjs,Angularjs,编辑:当我在表单中更改ng model=“$parent.selectedAnswer”时,它可以工作。如果有人能解释的话,我会记下来作为答案 我试图在单击“下一步”按钮时将选定的单选按钮值收集到角度函数,但它始终未定义。我真的搞不懂怎么了。单选按钮和值在html中正确填充。只有当单击“下一步”并尝试传入所选值时,它才会失败 我的逻辑很简单:每个单选按钮的值都是[branchid、leafid、answerid]的数组。单击next时,我尝试将该值绑定到“selectedAnswer”模型,并将
app.controller('GameNode',函数($scope,$http){
功能负载(选择的电源){
变量leafId=0,branchId=0,answerId=0;
警报(selectedAnswer);//这始终是未定义的
if(selectedAnswer!==undefined&&selectedAnswer!=null){
branchId=selectedAnswer[0];
leafId=selectedAnswer[1];
answerId=selectedAnswer[2];
}
$http.get(“/AccountRequest/GetNode?branchId=“+branchId+
“&leafId=“+leafId+
“&answerId=“+answerId”)
.成功(功能(数据){
$scope.node=数据;
});
}
$scope.next=加载;
加载();
});
-------------------------------------html端-----------------------------------
{{node.Question.Text}
{{answer.Text}
如果在控制器中定义$scope.selectedAnswer,是否解决了问题
app.controller('GameNode', function ($scope, $http) {
$scope.selectedAnswer = null;
function load(selectedAnswer) {
var leafId = 0, branchId = 0, answerId = 0;
alert(selectedAnswer); //this is always undefined
if (selectedAnswer !== undefined && selectedAnswer != null) {
branchId = selectedAnswer[0];
leafId = selectedAnswer[1];
answerId = selectedAnswer[2];
}
$http.get("/AccountRequest/GetNode?branchId=" + branchId +
"&leafId=" + leafId +
"&answerId=" + answerId)
.success(function(data) {
$scope.node = data;
});
}
$scope.next = load;
load();
});
如果没有,请创建一个JSFIDLE供我们使用。我认为这是因为ng repeat为每个项目创建了一个新的子范围,并且由于
selectedAnswer
没有在重复项目之外初始化selectedAnswer
将始终在父范围中未定义。您可以通过执行以下操作来解决此问题:
{{node.Question.Text}
{{answer.Text}
由于作者的声誉,我不会冒险回答这个问题。:-)对不起,你什么意思?哈哈,刚刚看到了!刚刚拍了一张截图。这很重要!!编辑后,您的问题是“请解释angular scope系统和javascript原型继承”。@Riz,不需要截图。您可以使用Firebug进行更改。;-)这很奇怪。我尝试了你们两人建议的改变,但没有成功。但当我更改ng模型=“$parent.selectedAnswer”时,它就起作用了。没有做任何其他更改!如果你们中有人能解释的话,我会把它作为一个答案。我已经修正了我的答案,我在ng模型中漏掉了一个点。在执行双向绑定时,不应直接绑定到scope属性,否则绑定可能会在子作用域中中断。请看Misko的视频:非常感谢您花时间解释正确的方法:)