Angularjs ng书籍示例未按预期工作
我目前正在阅读angular js的ng书籍,并获得了两段示例代码 第一个涉及$parse服务,可在此处找到: 第二个涉及$interpolate,可在此处找到: 我认为这两种方法都没有达到预期效果。他们应该实时更新视图。我尝试在本地创建第一个示例,但得到了相同的结果。我想这可能是因为angular的版本,但因为它使用的是google api的特定版本,所以这不应该是一个问题。我想弄清楚解析和插值服务到底在做什么,所以任何想法都非常受欢迎 谢谢Angularjs ng书籍示例未按预期工作,angularjs,angularjs-service,Angularjs,Angularjs Service,我目前正在阅读angular js的ng书籍,并获得了两段示例代码 第一个涉及$parse服务,可在此处找到: 第二个涉及$interpolate,可在此处找到: 我认为这两种方法都没有达到预期效果。他们应该实时更新视图。我尝试在本地创建第一个示例,但得到了相同的结果。我想这可能是因为angular的版本,但因为它使用的是google api的特定版本,所以这不应该是一个问题。我想弄清楚解析和插值服务到底在做什么,所以任何想法都非常受欢迎 谢谢 C这是提示您连接到站点的angular版本不是稳定
C这是提示您连接到站点的angular版本不是稳定版本,请使用此
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js"></script>
但是,代码没有按预期工作代码按预期工作,但很可能您没有按预期工作:) 让我们一次拿一个:
$scope.$watch('expr', function(newVal, oldVal, scope) {
if (newVal !== oldVal) {
// Let's set up our parseFun with the expression
var parseFun = $parse(newVal);
// Get the value of the parsed expression, set it on the scope for output
scope.parsedExpr = parseFun(scope);
}
});
$scope.$watch已设置并正在监视expr变量的更改,expr变量通过ng模型与输入值绑定
如果更改输入中的expr值,则会将其发送到$parse进行求值(在本例中,1+1应表示2,name应表示{“name”:“Ari Lerner”})。
$parse会将字符串表达式转换为函数,因此记住这一点,您应该知道应该期望什么
在第二个示例中,当主体部分通过textarea更改时,模板通过$interpolate呈现,它将计算{{}内的任何内容,然后呈现html。而不是将newVal param传递给$parse函数,您应该传递一个表达式'expr'
$scope.$watch('expr', function(newVal, oldVal, scope) {
if (newVal !== oldVal) {
// Let's set up our parseFun with the expression
var parseFun = $parse('expr');
// Get the value of the parsed expression, set it on the scope for output
scope.parsedExpr = parseFun(scope);
}
});
sure$parse返回一个函数,但该函数将在下一行中执行。html的设置方式非常清楚地表明parsedExpr应该等同于newVal。第二个例子也是如此。我不明白你的意思,我上面说的有什么不对吗?据我所知,$parse对表达式的求值就像我们把它放在一个双大括号{{}中一样。所以我们可以计算“1+1”或调用$scope的任何属性?太棒了,开始吧。非常感谢,我试了一整天:-)