sách gpt4 ai đã đi

angularjs - 范围问题中的 Angular 绑定(bind)模型?

In lại 作者:行者123 更新时间:2023-12-03 22:22:24 27 4
mua khóa gpt4 Nike

嗨,我是 angular js 的新手,并尝试使用 socket io 和 angular js 和 ionic 为 android 平台编写聊天应用程序。但是在我的聊天页面中存在一个问题。
我正在尝试绑定(bind) textboxđến$scope.message变量使用 ng-model但是当我在页面本身中显示相同的变量值时,它没有作为测试绑定(bind),它按原样工作,但在 Controller 中我得到的值为 không xác định或为空

索引.html

   


  • Welcome to Chat


  • {{chatMessage}}








{{message}} //This updates the value as i type in textbox




但是当我在控制台上看到打印该模型时,当我在 Controller 中开始定义时它显示未定义,然后它显示空值

Bộ điều khiển.js
   var farmAppControllers = angular.module('farmAppControllers',[]);


farmAppControllers.controller('farmAppController',['$scope','socket',function($scope,socket){
$scope.messages = [];
$scope.message = ''; //When i don't declare then console shows undefined on sendMessage function if declared then empty
socket.on("update", function (data) {
console.log(data);
$scope.messages.push(data);
});

$scope.sendMessage = function (){
console.log($scope);
console.log($scope.message); // This shows undefined or empty on console
socket.emit("msg",$scope.message);
$scope.messages.push($scope.message);
$scope.message ='';
};
}]);

我的 app.js
  'use strict';

var farmApp = angular.module('farmApp', ['farmAppControllers','farmAppServices','ionic']);

和 services.js 用于套接字包装器
  var farmAppServices = angular.module('farmAppServices',[]);


farmAppServices.factory("socket",function($rootScope){
var socket = io.connect();
trở lại {
on:function (eventName,callBack){
socket.on(eventName,function(){
var args = arguments;
$rootScope.$apply(function(){
callBack.apply(socket,args);
});
});
},
emit:function(eventName,data,callBack){
socket.emit(eventName,data,function(){
var args = arguments;
$rootScope.$apply(function(){
if(callBack){
callBack.apply(socket,args);
}
});
});
}
};
});

我被困在这里......我尝试用谷歌搜索但无法解决它。如有困惑,请随时发表评论。任何帮助都会很棒。

làm mới

当我使用 cái này 的第一个答案时问题问题已解决,但仍不清楚为什么 ng-submit 不起作用?任何想法为什么?因为似乎我仍然无法从 Controller 更新 View 范围?

1 Câu trả lời

我认为问题是 这是一个指令,似乎创建了自己的范围。从文档:

Be aware that this directive gets its own child scope. If you do not understand why this is important, you can read https://docs.angularjs.org/guide/scope.



因此,您的 tin nhắn属性不在您的 Controller 范围内。
对象通过引用传递, sendMessage是一个函数,分别是一个对象,这就是为什么仍然从子范围正确调用它的原因。

您应该做的是创建一个对象,该对象的名称对“打包”您要共享的属性是有意义的。
$scope.package = {} 
$scope.package.messages = [];
$scope.package.message = 'You default message...';

然后在你的函数中:
$scope.package.messages.push($scope.package.message);

在您的模板中:
 

Đây là plunker with a working solution .它会引发一些随机错误,我实际上不知道 ionic 。但是这个例子有效,其他一切都无关紧要。

关于angularjs - 范围问题中的 Angular 绑定(bind)模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23845897/

27 4 0
Bài viết được đề xuất: xcode - xcode 4中的重复设备方案
Bài viết được đề xuất: meteor - 从外部应用程序验证 meteor 用户
Bài viết được đề xuất: oauth - token 返回后,Google 和帐户关联失败的操作
Bài viết được đề xuất: Thư viện/công cụ nén PDF
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com