搜尋

首頁  >  問答  >  主體

angular.js - angularjs input標籤只能單向傳遞資料的問題

我的介面

 <ion-view title = "{{roomName}}" style = "height:90%;margin-top: 45px "  ng-init = "init()">
            <ion-pane>
            <ion-content zooming = "true"  class = "no-header">
                <ion-list>
                    <ion-item class="item item-input-inset">
                        <label class="item-input-wrapper">
                            <input type="text" placeholder="Your Message To Send" ng-model = "myMessage">
                        </label>
                        <button class="button button-small" ng-click = "sendMyMessage()">
                            发送
                        </button>
                    </ion-item>
                </ion-list>
            </ion-content>
            </ion-pane>

            <ion-pane style = "margin-top: 55px">
            <ion-content zooming = "true" class = "no-header" style = "margin-bottom: 50px">
                <ion-list>
                    <ion-item class = "item item-avatar-left my-item"
                             collection-repeat = "message in messages"
                             collection-item-width="'100%'"
                             collection-item-height="75">
                        <img ng-src="{{message.user.avatarUrl}}">
                        <h2>{{message.user.name}}:</h2>
                        <p>{{message.content}}</p>

                    </ion-item>
                </ion-list>

            </ion-content>
        </ion-pane>
        </ion-view>

我的controller

atMoon.controller('roomCtrl',['$scope','myService', function ($scope, myService) {


    $scope.sendMyMessage = function () {
        console.log($scope.myMessage)
        myService.sendMyMessage($scope, $scope.myMessage)
    }
    $scope.init = function () {
        myService.getMessages($scope);
    }
}])

列印的$scope.myMessage一直是undefine,如果我在controller中寫上$scope.myMessage = "xxxx"能再界面中顯示,所以資料只能從模型到視圖,不能從視圖到模型,求大神解答萬分感謝

仅有的幸福仅有的幸福2743 天前651

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-05-15 16:51:46

    我懷疑你這是被 scope 的原型繼承坑了

    ion-content 这些指令都是有各自的 scope 的,然后你在视图里写上 ng-model="myMessage" ,其实你在输入框填入的内容是放到了 ion-item 的 scope 上了,而你的 roomCtrl 的 scope 里的 myMessage 依旧是 undefined ;而当你在控制器里给 myMessage 赋值完了以后,由于 ion-item 的 scope 上还没有 myMessage 属性,所以就会从原型链上找,进而找到了 roomCtrl 的 scope 上的 myMessage

    這是我常用的解決方案:

    $scope.ctrlScope = $scope
    
    <input ng-model="ctrlScope.myMessage" />
    

    回覆
    0
  • 高洛峰

    高洛峰2017-05-15 16:51:46

    我也遇到了這個問題,貌似事angular.js-1.3.0版本的問題,低版本沒出現過,進過測試實驗,將myMessage放到一個Object中如下,可以測試通過,也不知道為啥(可能新版angular的優化了watch,watch過多會影響效率):

    controller中設定
    $scope.Messages={myMessage:""}

     $scope.sendMyMessage = function () {
            console.log($scope.Messages.myMessage);
        }
    
    <input ng-model="Messages.myMessage" />
    
    
    另外我用angular.js正在开发webapp,可以交流下,http://php.xlanlab.com/webapp/mobile-angular-ui-master/my/index.html
    

    回覆
    0
  • 取消回覆