RactiveJS 和 Stapes 模型没有更新
RactiveJS and Stapes model not updating
我正在尝试为 RactiveJS 中的 Stapes 对象创建过滤,但似乎两种方式的绑定都无法正确响应更新。
我不知道哪里出了问题,因为我认为它应该可以正常工作,我在这里创建了一个代码示例:
保留您的用户数组。您的筛选结果来自您的搜索查询和用户数组。为此使用计算属性。本质上,搜索结果是另一个数组。
这是一个使用 POJO 的示例,而不是 Stapes,但想法相同:http://jsfiddle.net/561fj33a/
HTML:
<script type="template/ractive" id="template-users-list">
<div>
<input type="text" value="{{ query }}">
</div>
<ul>
{{# usersList }}
<li>{{ name }}</li>
{{/}}
</ul>
</script>
JS:
var UsersList = Ractive.extend({
template: '#template-users-list',
data: {
query: '',
users: []
},
computed: {
usersList: function () {
var query = this.get('query');
var users = this.get('users');
return !query ? users : users.filter(function (user) {
return ~user.name.toLowerCase().indexOf(query);
});
}
}
});
var usersList = new UsersList({
el: 'body',
append: true
});
setTimeout(function () {
usersList.set('users', [{
name: 'James'
}, {
name: 'John'
}, {
name: 'Jenny'
}, {
name: 'George'
}, {
name: 'Harry'
}]);
}, 2000);
这是我使用计算 属性 和适合您的用例的过滤器的模式。结果我无法让 Stapes 对象直接可用,但有一个 getAllAsArray()
似乎有效:
computed: {
filtered: function () {
var query = this.get( 'query').trim(),
users = this.get( 'users' );
return query ? users.search(query) : users.getAllAsArray();
}
},
data: function () {
return {
users: usersModel,
query: ''
}
}
作为纯反应式编程与子组件一起工作,无需事件:
<Search query="{{query}}" placeholder="Search users" />
已更新 垃圾箱在这里:https://jsbin.com/bomumajagu/edit?html,output
Push 对抗镫骨模型:
this.get( 'users' ).push( { name: newUser } );
我正在尝试为 RactiveJS 中的 Stapes 对象创建过滤,但似乎两种方式的绑定都无法正确响应更新。
我不知道哪里出了问题,因为我认为它应该可以正常工作,我在这里创建了一个代码示例:
保留您的用户数组。您的筛选结果来自您的搜索查询和用户数组。为此使用计算属性。本质上,搜索结果是另一个数组。
这是一个使用 POJO 的示例,而不是 Stapes,但想法相同:http://jsfiddle.net/561fj33a/
HTML:
<script type="template/ractive" id="template-users-list">
<div>
<input type="text" value="{{ query }}">
</div>
<ul>
{{# usersList }}
<li>{{ name }}</li>
{{/}}
</ul>
</script>
JS:
var UsersList = Ractive.extend({
template: '#template-users-list',
data: {
query: '',
users: []
},
computed: {
usersList: function () {
var query = this.get('query');
var users = this.get('users');
return !query ? users : users.filter(function (user) {
return ~user.name.toLowerCase().indexOf(query);
});
}
}
});
var usersList = new UsersList({
el: 'body',
append: true
});
setTimeout(function () {
usersList.set('users', [{
name: 'James'
}, {
name: 'John'
}, {
name: 'Jenny'
}, {
name: 'George'
}, {
name: 'Harry'
}]);
}, 2000);
这是我使用计算 属性 和适合您的用例的过滤器的模式。结果我无法让 Stapes 对象直接可用,但有一个 getAllAsArray()
似乎有效:
computed: {
filtered: function () {
var query = this.get( 'query').trim(),
users = this.get( 'users' );
return query ? users.search(query) : users.getAllAsArray();
}
},
data: function () {
return {
users: usersModel,
query: ''
}
}
作为纯反应式编程与子组件一起工作,无需事件:
<Search query="{{query}}" placeholder="Search users" />
已更新 垃圾箱在这里:https://jsbin.com/bomumajagu/edit?html,output
Push 对抗镫骨模型:
this.get( 'users' ).push( { name: newUser } );