我有一個叫做Model
的Angular工廠,它跨多個控制器共享。 基本上這個Model
封裝了屬性和助手方法。如何從共享工廠綁定數組或對象?
我現在試圖將這個模型與我的視圖綁定,我有一個奇怪的行爲,Model
的嵌套對象和對象數組綁定不正確。
我認爲這個問題是由於我試圖通過引用修改其他對象內的對象造成的。也許我已經失去了嵌套元素的上下文?
我該如何解決這個問題?
這裏是我的應用程序:
var app = angular.module('plunker', []);
app.factory('Blog', function() {
function Blog(id) {
this.load(id);
}
Blog.prototype = {
name: "",
description: [{
value: ""
}, {
value: ""
}, {
value: ""
}],
website: {
name: "",
url: ""
},
load: function(id) {
},
helper1: function() {
// implementation
},
helper2: function() {
// implementation
}
// many other helpers...
}
return Blog;
});
app.controller('MainCtrl', function($scope, Blog) {
$scope.model = new Blog(12);
});
最後我看來
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="[email protected]" src="https://code.angularjs.org/1.2.22/angular.js" data-semver="1.2.22"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<p>Name <input ng-model="model.name"></p>
<div ng-repeat="line in model.description">
Description line {{$index}} <input ng-model="line.value">
</div>
<p>Website name <input ng-model="model.website.name"></p>
<p>Website url <input ng-model="model.website.url"></p>
<p>Result : {{ model | json }}</p>
</body>
</html>
爲了說明這個問題,我創建了一個plunker example 當進入輸入字段中的值,該Model
是未更新更改。只有場name
更新提前
感謝
謝謝@anand,這是工作,那麼構造函數呢? '函數Blog(){}'我忘了提及,我的應用程序我通過一些參數,當我做'新' – Michael 2014-08-28 12:59:45
嘿看看我的編輯 – Anand 2014-08-28 13:19:50
再次感謝@anand,這個答案是最好的。最後的評論,我不明白爲什麼JSON過濾器不顯示值?由於「博客」的性質,爲什麼值被放入'__proto__'?再次感謝:) – Michael 2014-08-28 13:31:29