小编Dav*_*ird的帖子

AngularJS中的华氏度和摄氏度双向转换

在AngularJS中,如何$ watch $ scope变量并使用它来更新另一个变量是很简单的.但是,如果两个范围变量需要相互观察,那么最佳实践是什么?

我有一个双向转换器,将华氏温度转换为摄氏温度,反之亦然.如果你在华氏度中键入"1",它会正常工作,但尝试"1.1"并且Angular会在覆盖你刚刚输入的华氏度之前稍微反弹一下(1.1000000000000014):

function TemperatureConverterCtrl($scope) {
  $scope.$watch('fahrenheit', function(value) {
    $scope.celsius = (value - 32) * 5.0/9.0;
  });
  $scope.$watch('celsius', function(value) {
    $scope.fahrenheit = value * 9.0 / 5.0 + 32;
  });
}
Run Code Online (Sandbox Code Playgroud)

这是一个吸烟者:http://plnkr.co/edit/1fULXjx7MyAHjvjHfV1j?p = preview

有哪些不同的可能方法可以阻止Angular"弹跳"并强制它使用您按原样键入的值,例如使用格式化程序或解析器(或任何其他技巧)?

data-binding angularjs

9
推荐指数
2
解决办法
4361
查看次数

最佳实践使用svn:externals

我们来看三个案例:

  1. 这句话很好.999是一个挂钩.这就是所谓的"旧格式":

    foo -r999 http://myrepo/foo

  2. 或者,也可以像这样指定peg("新格式"),也很好:

    http://myrepo/foo@999 foo

  3. 但是这里出现了"新格式"的复杂性:-r999可以放在前面,这完全是从一个挂钩变成一个"操作版本".根据SVN书的说法,实际挂钩变为HEAD(即不再具有确定性):

    -r999 http://myrepo/foo foo

    这就是为什么我认为这种格式可能是一个非常糟糕的主意:如果在999之后将"bar"重命名为"foo",实际上会检出哪些内容?重命名的版本,@ 999吧.这真的有用吗?然后,另一个重命名发生,将"baz"命名为"foo".现在用户将查看baz @ 999.因此,随着时间的推移,用户永远不会确定999是指相同的代码.

#3是一个等待造成麻烦的漏洞吗?是否应该用鲜红色警告用户以避免使用#3的格式?或者它是否真的有用,尽管它具有非确定性?这几乎容易误解和出错,因此似乎需要指定最佳实践.

SVN Book中,如果你真的深入研究它,它会巧妙地暗示用户要小心:

小心避免天真地重新定位定义的-rNNN部分 - 旧格式使用该修订作为挂钩修订版,但较新的格式使用它作为操作修订版(除非另有说明,否则使用HEAD的挂钩修订版;请参阅调用部分"挂钩和操作修订",以完整解释这里的区别).

svn svn-externals

5
推荐指数
2
解决办法
5713
查看次数

标签 统计

angularjs ×1

data-binding ×1

svn ×1

svn-externals ×1