Model view controller 在指令中更新angularjs中的控制器模型

Model view controller 在指令中更新angularjs中的控制器模型,model-view-controller,angularjs,Model View Controller,Angularjs,我试图理解angularJS,它的方法与我所看到的脏检查模型更新不同 基本上,我有一个指令ng draggable,它使元素。。。拖拉的。我有一个与每个元素链接的模型,该模型具有属性x和y——与模型链接的元素的位置——我希望指令更新模型 为此,我尝试在指令中使用$apply函数并设置模型值x和y。然后我还使用$observe函数更新视图:。(注意我使用工厂捕捉鼠标事件) 它似乎工作得很好。但是,当我使用保存按钮检查模型值时(它在控制台中打印模型),位置x和y不会更新 所以我的问题是如何让它工作?

我试图理解angularJS,它的方法与我所看到的脏检查模型更新不同

基本上,我有一个指令
ng draggable
,它使元素。。。拖拉的。我有一个与每个元素链接的模型,该模型具有属性
x
y
——与模型链接的元素的位置——我希望指令更新模型

为此,我尝试在指令中使用
$apply
函数并设置模型值x和y。然后我还使用
$observe
函数更新视图:。(注意我使用工厂捕捉鼠标事件)

它似乎工作得很好。但是,当我使用保存按钮检查模型值时(它在控制台中打印模型),位置x和y不会更新

所以我的问题是如何让它工作?更一般地说,这里发生了什么?关于angularJS中MVC模式的任何阅读建议(我发现开发者指南对初学者来说有点苛刻)


谢谢您的帮助。

您的方法的问题是您正在更改整个
ngModel
参考,而不是仅更改其一个属性(
x
和/或
y
)。执行此操作时,会断开与初始
ngModel
(播放器中的对象数组)的连接,从而断开与“真实”模型(对象
play
)的连接

试着这样做:

scope.$apply(function() {                 
    model.$modelValue.x = event.screenX - startX;
    model.$modelValue.y = event.screenY - startY;
});

jsiddle:

谢谢!一定要很好地理解你;在我的指令中传递的ngModel不是当前的模型,但如果我理解,一种“即时”控制器,允许修改我的模型?最初传递给指令的
ngModel
是正确的,问题是您正在用指令中创建的新对象替换它。这就像你在做
model.$modelValue=newobject()导致
$modelValue
不再引用
players
数组中的元素(初始
ngModel
),而是引用刚刚创建的新对象。啊!好了,现在我想我明白了。。。谢谢你的精确。
scope.$apply(function() {                 
    model.$modelValue.x = event.screenX - startX;
    model.$modelValue.y = event.screenY - startY;
});