Angularjs ng书籍示例未按预期工作

Angularjs ng书籍示例未按预期工作,angularjs,angularjs-service,Angularjs,Angularjs Service,我目前正在阅读angular js的ng书籍,并获得了两段示例代码 第一个涉及$parse服务,可在此处找到: 第二个涉及$interpolate,可在此处找到: 我认为这两种方法都没有达到预期效果。他们应该实时更新视图。我尝试在本地创建第一个示例,但得到了相同的结果。我想这可能是因为angular的版本,但因为它使用的是google api的特定版本,所以这不应该是一个问题。我想弄清楚解析和插值服务到底在做什么,所以任何想法都非常受欢迎 谢谢 C这是提示您连接到站点的angular版本不是稳定

我目前正在阅读angular js的ng书籍,并获得了两段示例代码

第一个涉及$parse服务,可在此处找到:

第二个涉及$interpolate,可在此处找到:

我认为这两种方法都没有达到预期效果。他们应该实时更新视图。我尝试在本地创建第一个示例,但得到了相同的结果。我想这可能是因为angular的版本,但因为它使用的是google api的特定版本,所以这不应该是一个问题。我想弄清楚解析和插值服务到底在做什么,所以任何想法都非常受欢迎

谢谢


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的任何属性?太棒了,开始吧。非常感谢,我试了一整天:-)