Angular中的以下代码/实践有什么问题?

时间:2015-05-30 13:14:40

标签: angularjs angularjs-scope angular-ngmodel

在我的Angular Controller中,我使用以下内容......

    <input type="checkbox" ng-model="selectedAll.all" ng-click="checkAll()"/> All

稍后在模板中,它就像这样绑定......

    $scope.selectedAll2 = false;

事情按照我的预期运作。基本上,selectedAll2仍然是假的。但是,我试图将控制器的代码更改为...

    <input type="checkbox" ng-model="selectedAll2" ng-click="checkAll()"/> All

并将其绑定在模板中,就像这样......

public Object invoke(Object obj,
            Object... args)
              throws IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException

它不能像我期望的那样工作。我错过了什么?请建议是否存在根本错误或为什么我不应该尝试直接绑定到范围变量。

1 个答案:

答案 0 :(得分:0)

在第一种情况下,您使用的是具有子范围属性 all 的“父”范围( $ scope.selectedAll )。

当父作用域具有字段时,将继承子作用域属性。

在第二种情况下,您只使用原始 selectedAll2

有什么问题?

基元只能用于读取,而不能用于写入值。 在这种情况下,您隐藏了父范围,问题就会发生。

通过遵循始终拥有'。'的“最佳实践”,可以轻松避免使用原语这个问题。在ng-model

您必须了解范围的工作原理。看看这个documentation。 在您阅读并观看文章的相关链接后,我认为理解问题将非常清楚。

我希望它会有所帮助。