ng-book示例未按预期工作

时间:2014-09-03 15:17:13

标签: angularjs angularjs-service

我目前正在阅读有关角度js的ng-book,并且有两个代码段。

第一个处理$ parse服务,可在此处找到:http://jsbin.com/UWuLALOf/1/edit

第二个涉及$ interpolate,可在此处找到:http://jsbin.com/oDeFuCAW/1/edit

这些都没有按预期工作(我认为)。他们应该现场更新视图。我尝试在本地创建第一个示例,但我得到了相同的结果。我想也许这是由于角度的版本,但因为它使用谷歌api的特定版本,这应该不是一个问题。我想弄清楚解析和插值服务在这里做了什么,所以任何想法都非常感激。

由于

C

3 个答案:

答案 0 :(得分:1)

不应将newVal参数传递给$ 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);
    }
});

答案 1 :(得分:0)

这是你附加到网站的角度版本不是稳定版本,请使用此

<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js"></script>

但是代码没有按预期工作

答案 2 :(得分:0)

代码按预期工作,但很可能你并不期望你应该做什么:)

让我们一次拿一个:

  $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变量的变化,该变量通过ng-model与输入值绑定

如果更改输入中的expr值,则会将其发送到$ parse进行评估(1 + 1应该出现2,名称应该出现{&#34; name&#34;:&#34; Ari Lerner&#34 ;} 在这种情况下)。 $ parse会将字符串表达式转换为函数,因此请记住这一点,你应该知道会发生什么。

在第二个例子中,当通过textarea更改正文部分时,模板通过$ interpolate呈现,它将评估{{}}内的任何内容,然后呈现html。