javascript - Angular View {{ var }} 更新,但 $scope.var 没有改变?

标签 javascript angularjs angularjs-directive angular-ui-bootstrap

我正在使用 ui-bootstrap rating directive ,并且遇到了一些奇怪的事情。

下面是该指令使用的标记。两个变量被传递到指令中,rateValue和rateMax

<div class="ratingContainer textCentered">
    <rating value="rateValue" max="rateMax"></rating>
</div>
<h4>
    {{rateValue}} / {{rateMax}}
</h4>

奇怪的是,当我选择不同数量的星星时,我可以看到 View 中正在更新的rateValue 变量。但变量的值不会在 $scope View 模型中更新。

app.controller( 'addModalCtrl', function($scope, $modalInstance, selectedMovie, myMovieService ) {

  $scope.rateValue = 0;
  $scope.rateMax = 10;
  $scope.selectedMovie = selectedMovie;

  $scope.addToLib = function( item ) {

    var jsonData = {
        tmdb_id: $scope.selectedMovie.id,
        my_rating: $scope.rateValue //this always remains 0
    };

最佳答案

不确定这里到底出了什么问题,但我猜这是由于作用域变量是基元而不是对象引起的;其中technical reasons行为出乎意料。

一般来说,最好使用对象来存储范围值,而不是直接使用变量。因此,您应该将作用域变量放入像这样的对象中:

 $scope.vals = {};
 $scope.vals.rateValue = 0;
 $scope.vals.rateMax = 10;
 //etc.
 // Functions doesn't need to be in an object:
 $scope.addToLib = function( item ) { //...

 <h4>
     {{vals.rateValue}} / {{vals.rateMax}}
 </h4>

关于javascript - Angular View {{ var }} 更新,但 $scope.var 没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219122/

相关文章:

javascript - 通过函数刷新/重绘数据表

javascript - 带有 TinyMCE 编辑器的 IBM/HCL Connections 5 CR6 中的插件

javascript - 使用搜索小部件/地理编码器限制搜索范围

javascript - angular 在过滤器中从 $rootScope 调用实用函数

javascript - $location 在 AngularJS 自定义指令中不起作用

javascript - Selenium IDE 卡在弹出窗口 javascript 中

javascript - 使用 ng-if 的不同渲染?

javascript - AngularJS中的服务和 Controller 之间没有发生数据绑定(bind)

javascript - 如何从 $scope.$on 返回一些值到 $scope.$emit

javascript - 如何在angular js中编辑行的文本?