cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Help Angular 1 Mengapa memberikan nilai kepada sifat objek dalam $scope tidak berfungsi (masalah skop), terima kasih tanpa henti!

Tentukan modul sedemikian dan gunakan ngRoute asli angular

var app = angular.module('NewsPub', ['ngRoute']);

//配置路由,controller为下面定义的AddController
app.config['$routeProvider', function($routeProvider) {
  $routeProvider.when('/add', {templateUrl: add.html,controller: 'AddController'});
}

app.controller('AddController',function($scope){
    $scope.title = '';
    var a = {prop: $scope.title};
    $scope.add = function(){
      console.dir(a);
    }            
});

Pada nilai dengan id add.html的ng-template使用了ng-model绑定了$scopetitle, dan tetapkan butang untuk mengikat acara tambah()

<input type="text" ng-model="title" value="标题">
<span>{{title}}</span>
<button ng-click="add()">Btn</button>

Sekarang datang masalah, seperti yang ditunjukkan dalam rajah di bawah, tukar nilai dalam kotak input框内的值,<span>内的值会跟着改变,这说明数据有存在双向绑定,即$scope.title会随着input.

Namun, walau macam mana pun ia berubahinput框内的值,点击button内触发add()事件时,控制台输出的a对象的prop属性永远是$scope.title的初始值'' ( tidak akan berubah apabila nilai tajuk berubah)

Sila minta tuan untuk membantu saya, saya seorang pemula dan saya tidak dapat memikirkannya setelah sekian lama, saya bersyukur tidak terhingga!

巴扎黑巴扎黑2864 hari yang lalu640

membalas semua(3)saya akan balas

  • 迷茫

    迷茫2017-05-16 13:22:13

    Input pada halaman anda terikat pada $scope.title, bukan a.prop anda . Kemudian tetapkan nilai kepadanya, jadi nilai itu akan sentiasa menjadi nilai yang anda tetapkan pada mulanya, iaitu "".

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:22:13

    Ini ialah masalah rujukan berubah
    `$scope.title = '';

    var a = {prop: $scope.title};`

    Mencipta dua rujukan sifat objek kepada ''的引用,你改变了$scope.title的值,就是断掉了$scope.title的引用,但是a.prop依然保持对''

    balas
    0
  • 迷茫

    迷茫2017-05-16 13:22:13

    Adalah disyorkan untuk membaca artikel Memahami Skop AngularJS.

    balas
    0
  • Batalbalas