I am under the impression that using destroy() is the preferred way to remove models from a model list. However if I call destroy on a new model CanJS tries to make an http request to the server which is unnecessary. So I need to check if the model is new before calling destroy. If it is new then remove it manually. Which seems wrong.
Yes, this is what I am doing now (using splice). And this is what I meant by manually. Somehow it feels like something is missing here. Like just being able to call model.destroy() to remove the model from the list (even if not persisted) and have the view update automatically.
Destroy is meant to delete the model. It has a side effect of removing the model from a list, but that's not how you're supposed to remove from a list. That's what the list mutation methods are for. Use them, and the view will update.